рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ рдФрд░ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рд╣рдо (
Mail.ru рдХреИрд▓реЗрдВрдбрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ) рдЬреЗрдирдХрд┐рдВрд╕ CI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрд╕реЗрдВрдмрд▓реА рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рд╣реБрдХ рджреНрд╡рд╛рд░рд╛) рдкрд░ рдзрдХреЗрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рд╕рдордп рдкрд░ рдврдВрдЧ рд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рддрд░рдл, рдИрдореЗрд▓ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЧрддреА рд╣реИ, рджреВрд╕рд░реА рддрд░рдл, рдореИрдВ рдХреБрдЫ рдФрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдордЬреЗрджрд╛рд░ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд▓рдЧрднрдЧ рддреАрди рдпрд╛ рдЪрд╛рд░ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЬрдм рдореИрдВ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЙрд╕реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдПрдХ рдлреНрд▓реИрд╢рд░ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ 220-рд╡реЛрд▓реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЦреНрдпрд╛рдд рдХрдВрдкрдиреА рдорд╛рд╕реНрдЯрд░рдкрд┐рдЯ рдХрд╛ MP709 рдореЙрдбреНрдпреВрд▓ (USB рд░рд┐рд▓реЗ) рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдорд╛рдзрд╛рди рдЕрд╕рдлрд▓ рдерд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рд╕рдордп рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдирдХреНрд╕ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдерд╛ (рдореБрдЭреЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдирд╛ рдерд╛ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ "рдбреНрд░рд╛рдЗрд╡рд░" рд▓рд┐рдЦрдирд╛ рдерд╛), рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рдЖрдЙрдЯрд▓реЗрдЯ рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рддрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдкреНрд░рдХрд╛рд╢ рдХрд╛ рд╕реНрдерд╛рди рд╕реАрдорд┐рдд рдерд╛ред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдбрд┐рдЬрд╛рдЗрди рджреВрд░ рдХреЗ рдмреЙрдХреНрд╕ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкрдВрдЦреЛрдВ рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореЗрд░реЗ рд╣рд╛рде рдлрд┐рд░ рд╕реЗ рдХрдВрдШреА рдХрд░ рд░рд╣реЗ рдереЗ, рдореИрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмреЗрдХрд╛рд░ рдФрд░ рдореБрдЭреЗ рдлреНрд▓реИрд╢рд░ рдпрд╛рдж рдерд╛ред рд░рдмрд┐рд╢ рдХреЗ рдвреЗрд░ рдореЗрдВ рдЕрдлрд░рд╛-рддрдлрд░реА рдордЪрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рд╡рд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд▓ рдЖрдпрд╛: рдЕрд░реБрдбрд┐рдиреЛ рдиреИрдиреЛ - рджреЛ рдЯреБрдХрдбрд╝реЗ, рд░рд┐рд▓реЗ рдореЙрдбреНрдпреВрд▓ - рдПрдХ рдЯреБрдХрдбрд╝рд╛, рдПрдордПрдХреНрд╕ -05 рд╡реА рд░рд┐рд╕реАрд╡рд░ - рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдФрд░ рдПрдордПрдХреНрд╕-рдПрдлрдПрд╕ -03 рд╡реА рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ - рдПрдХ рдЯреБрдХрдбрд╝рд╛ред рдмрд╛рдХреА рдХреВрдбрд╝реЗ рдХреЛ рдмрд╛рд▓рдХрдиреА рдореЗрдВ рджреВрд░ рдХреЛрдиреЗ рдореЗрдВ рдлреЗрдВрдХрдХрд░, рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдШрдВрдЯреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЙрдкрдХрд░рдг рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдЧреАрддрд╛рддреНрдордХ рд╕реНрддреВрдк : рдПрдХ рдмрд╛рд░, рдмрд╣реБрдд рдкрд╣рд▓реЗ, рдЬрдм рдореИрдВ рдЫреЛрдЯрд╛ рдерд╛ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рдордп рдерд╛, рдореИрдВ AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛, рдмреЛрд░реНрдб рдХреЛ рдорд┐рд▓рд╛рдКрдВрдЧрд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдорд┐рд▓рд╛рдКрдВрдЧрд╛, рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реВрдВрдЧрд╛ ... рдФрд░ рдореБрдЭреЗ рд╡рд╣реА рдорд┐рд▓реЗрдЧрд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрдЦ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд╣реИред
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░
рд╕рд░реНрдХрд┐рдЯ рдмреЗрд╣рдж рд╕рд░рд▓ рдирд┐рдХрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдореЙрдбреНрдпреВрд▓реЛрдВ, рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдФрд░ рдмреНрд▓реЙрдХреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЛрд╣рд╛ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рд╕рд░реНрдХрд┐рдЯрд░реА рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рд░рд┐рд╕реАрд╡рд░ (MX-05V + Arduino рдиреИрдиреЛ + рд░рд┐рд▓реЗ рдореЙрдбреНрдпреВрд▓):

рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рднреА рд╕рд░рд▓ рд╣реИ: Arduino рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ USB рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдорд╛рдВрдб рд╕реБрдирддрд╛ рд╣реИред рдпрджрд┐ рдХрдорд╛рдВрдб рдорд╛рдиреНрдп рд╣реИ, рддреЛ рдЗрд╕реЗ рд░реЗрдбрд┐рдпреЛ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реЗ рдмреНрд▓реЙрдХ рдореЗрдВ, рдПрдХ рдФрд░ Arduino рд░рд┐рд╕реАрд╡рд░ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ рдФрд░, рдЬрдм рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рддреЛ рд░рд┐рд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИред рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ, рдХреЛрдИ рдЬрд╛рдВрдЪ (рдЪреЗрдХрд╕рдо) рдирд╣реАрдВ, рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВред
рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
#include <VirtualWire.h>
int ledPin = 13 ; // рдЗрд╕ рдкрд░ рдиреЗрддреГрддреНрд╡ рдХреЗ рд╕рд╛рде рдкрд┐рди
рдЪрд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реА_рдмрд╛рдп ; // рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдлрд░
char input_data [ 12 ] ; // рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░
int input_size = 0 ; // рдХрд╛рдЙрдВрдЯрд░, рд╕рд┐рд░реНрдл рдХрд╛рдЙрдВрдЯрд░
рд╢реВрдиреНрдп рд╕реЗрдЯрдЕрдк ( ) {
// рд╕реЗрдЯрдЕрдк рдПрд▓рдИрдбреА рдкрд┐рди
рдкрд┐рдирдореЛрдб ( ledPin, OUTPUT ) ;
digitalWrite ( ledPin, LOW ) ;
// рд╕реАрд░рд┐рдпрд▓ рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВ (9600 рдмреАрдкреАрдПрд╕)
рд╕реАрд░рд┐рдпрд▓ред рд╢реБрд░реВ ( 9600 ) ;
рд╕реАрд░рд┐рдпрд▓ред Println ( "рдЕрдЪрддреБрдВрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░" ) ;
// IO рдФрд░ ISR рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
vw_set_ptt_inverted ( рд╕рдЪ ) ; // DR3100 рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ
vw_setup ( 1200 ) ; // рдмрд┐рдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб
}
рд╢реВрдиреНрдп рд▓реВрдк ( ) {
рдЬрдмрдХрд┐ ( рд╕реАрд░рд┐рдпрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИ ) ( 0 ) 0 ) {
рдЖрд╡рдХ_рдмреЗрдЯреЗ = рд╕реАрд░рд┐рдпрд▓ред рдкрдврд╝реЗрдВ ( ) ; // рдЖрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдЗрдЯ рдкрдврд╝реЗрдВ
рдЕрдЧрд░ ( рдЖрдиреЗ рд╡рд╛рд▓реА_рдмрд╛рдЗрдЯ == 'рдПрди' ) {
input_data [ input_size ++ ] = 0 ;
if ( strncmp ( input_data, "Achtung ON" , 10 ) == 0 || strncmp ( input_data, "Achtung Off " , 11 ) == 0 ) {
digitalWrite ( ledPin, HIGH ) ;
vw_send ( ( uint8_t * ) input_data, input_size ) ;
vw_wait_tx ( ) ; // рдкреВрд░рд╛ рд╕рдВрджреЗрд╢ рдЪрд▓реЗ рдЬрд╛рдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
digitalWrite ( ledPin, LOW ) ;
рд╕реАрд░рд┐рдпрд▓ред Println ( "рдУрдХреЗ" ) ;
} {
рд╕реАрд░рд┐рдпрд▓ред Println ( "рд╡рд┐рдлрд▓" ) ;
}
рдЬрдмрдХрд┐ ( input_size - > = 0 ) {
input_data [ input_size ] = 0 ;
}
input_size = 0 ; // рд░реАрд╕реЗрдЯ рдХрд╛рдЙрдВрдЯрд░
} {
рдЕрдЧрд░ ( input_size <= 11 ) {
input_data [ input_size ] = рдЖрдиреЗ рд╡рд╛рд▓реА_рдмреЗрдЯреЗ ;
}
input_size ++ ;
}
}
}
рд░рд┐рд╕реАрд╡рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо:
#include <VirtualWire.h>
int ledPin = 13 ; // рдЗрд╕ рдкрд░ рдиреЗрддреГрддреНрд╡ рдХреЗ рд╕рд╛рде рдкрд┐рди
int relayPin = 3 ; // рдЗрд╕ рдкрд░ рд░рд┐рд▓реЗ рдХреЗ рд╕рд╛рде рдкрд┐рди
рдмрд╛рдЗрдЯ рдЗрдирдкреБрдЯ_рдбрд╛рдЯрд╛ [ VW_MAX_MESSAGE_LEN ] ; // рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдлрд░
рдмрд╛рдЗрдЯ input_size = VW_MAX_MESSAGE_LEN ; // рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░
рд╢реВрдиреНрдп рд╕реЗрдЯрдЕрдк ( ) {
// рд╕реЗрдЯрдЕрдк рдПрд▓рдИрдбреА рдкрд┐рди
рдкрд┐рдирдореЛрдб ( ledPin, OUTPUT ) ;
digitalWrite ( ledPin, LOW ) ;
// рд╕реЗрдЯрдЕрдк рд░рд┐рд▓реЗ рдкрд┐рди
рдкрд┐рдирдореЛрдб ( relayPin, OUTPUT ) ;
digitalWrite ( relayPin, HIGH ) ;
// IO рдФрд░ ISR рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
vw_set_ptt_inverted ( рд╕рдЪ ) ; // DR3100 рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ
vw_setup ( 1200 ) ; // рдмрд┐рдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб
vw_rx_start ( ) ; // рд░рд┐рд╕реАрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ
}
рд╢реВрдиреНрдп рд▓реВрдк ( ) {
// рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рд╣реИ
рдЕрдЧрд░ ( vw_get_message ( input_data, рдФрд░ input_size ) ) {
digitalWrite ( ledPin, HIGH ) ;
if ( strncmp ( ( * * ) input_data, "Achtung ON" , 10 ) == 0 ) {
digitalWrite ( relayPin, LOW ) ; // achtung! рд░рд┐рд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ
} рдФрд░ рдЕрдЧрд░ ( strncmp ( char * ) input_data, "Achtung OFF" , 11 ) = = 0 ) {
digitalWrite ( relayPin, HIGH ) ; // рд░рд┐рд▓реЗ рд░рд┐рд▓реЗ
} {
рджреЗрд░реА ( 1000 ) ;
}
digitalWrite ( ledPin, LOW ) ;
}
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдХреНрд░рдорд╢рдГ, рд░рд┐рд╕реАрд╡рд░ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ Arduino рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХреАрдХреГрдд рдмреВрдЯрд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ "рд╕реАрд░рд┐рдпрд▓ рдореЙрдиреАрдЯрд░" рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рд▓реЗ рдХреЛ / рдСрдл рдХрдорд╛рдВрдб рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЕрдорд╛рдиреНрдп рдХрдорд╛рдВрдб (рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП):
рд░рд┐рд▓реЗ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред
рдпрд╣ рдлреНрд▓реИрд╢рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдо рд░рд┐рд╕реАрд╡рд░ рдФрд░ рд░рд┐рд▓реЗ рдХрд╣рд╛рдВ рд░рдЦреЗрдВрдЧреЗ:
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрджрд░ рдмрд╣реБрдд рдЬрдЧрд╣ рд╣реИред рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд░рд┐рд╕реАрд╡рд░ рдХреА рд╢рдХреНрддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛: рдореИрдВрдиреЗ рдкреБрд░рд╛рдиреЗ рдХреЛ рд▓реЗ рд▓рд┐рдпрд╛, рдЬреЛ рдПрдХ рдиреЛрдХрд┐рдпрд╛ рд╕реЗрд▓ рдлреЛрди рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ, рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рд╣реЛ рдЧрдпрд╛, рдЗрд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдмреЛрд░реНрдб рдорд┐рд▓рд╛ рдЬреЛ рд╣рдорд╛рд░реЗ 220 рд╡реЛрд▓реНрдЯ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рд╢рдХреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдХрд┐ рдмреЛрд░реНрдб рдХреЛ рдорд╛рдорд▓реЗ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрдард┐рди рдереАред рдорд╛рдорд▓рд╛ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рд╕реЗ рдмрдирд╛ рд╣реИред рдлрд┐рд░ рднреА, рдореИрдВ рд╕рдлрд▓ рд░рд╣рд╛:

рд╣рдо рдЕрдкрдиреЗ рд░рд┐рд╕реАрд╡рд░ рдФрд░ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдлреНрд▓реИрд╢рд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ:

рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рд╕реАрд░рд┐рдпрд▓ рдореЙрдиреАрдЯрд░" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЛ "Achtung ON" рдХрдорд╛рдВрдб рднреЗрдЬрддреЗ рд╣реИрдВред рд░рд┐рд▓реЗ рдиреЗ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛, рдкреНрд░рдХрд╛рд╢ рдкрд░ рдЖрдпрд╛, рдЗрдВрдЬрди рдХрд╛рддрд╛, рдЪреАрдпрд░реНрд╕! рд╣рдо рдХрдорд╛рдВрдб "рдЕрдЪреБрдВрдЧ рдСрдл" рднреЗрдЬрддреЗ рд╣реИрдВ - рд╕рдм рдХреБрдЫ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рдЪрдордХрддреА рд░реЛрд╢рдиреА рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╢рд┐рдХрдВрдЬрд╛ рдФрд░ рдЪреАрдиреА рдЧрд░реНрдо-рдкрд┐рдШрд▓ рдЪрд┐рдкрдХрдиреЗ рд╡рд╛рд▓реЗ рдмреЛрд░реНрдбреЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдФрд░ рдкреВрд░реЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдЦрдбрд╝реЗ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдмрд╕ рдПрдХ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд┐рдпрд╛:
рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдпрд╣ рд╕рдм рдПрдХ рд╕реБрдВрджрд░ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рддрдХ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
#! / usr / bin / env рдЕрдЬрдЧрд░
"" "
рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'ON' рдпрд╛ 'OFF' рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВред
"" "
__future__ рд╕реЗ рдкреНрд░рд┐рдВрдЯ_рдлрдВрдХреНрд╢рди рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд os
рдЖрдпрд╛рдд sys
рдЖрдпрд╛рдд рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ
рдЕрдЧрд░ __name__ == '__main__' :
рдЕрдЧрд░ len ( sys ред argv ) ! = 3 :
рдкреНрд░рд┐рдВрдЯ ( "рдЙрдкрдпреЛрдЧ: achtung / dev / ttyXX <ON | OFF>" )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
tty = sys ред argv [ 1 ]
рдпрджрд┐ рдУрдПрд╕ рдирд╣реАрдВ рд╣реИ ред рдкрде ред рдореМрдЬреВрдж рд╣реИ ( tty ) :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдбрд┐рд╡рд╛рдЗрд╕ '% s' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ" % tty )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рдХрдорд╛рдВрдб = рд╕рд┐рд╕ ред argv [ 2 ]
рдпрджрд┐ рдХрдорд╛рдВрдб ( 'рдУрдПрди' , 'рдСрдл' ) рдореЗрдВ рдирд╣реАрдВ рд╣реИ :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдЕрдЬреНрдЮрд╛рдд рдХрдорд╛рдВрдб '% s'" % рдХрдорд╛рдВрдб )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ = рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХред рд╕реАрд░рд┐рдпрд▓ ( рдЯреНрдЯреА , 9600 )
рдЕрдЧрд░ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╣реИред рд░реАрдбрд▓рд╛рдЗрди ( ) ред рдкрдЯреНрдЯреА ( ) ! = 'рд░реЗрдбреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░' :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рд╣реИ" )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ред рд▓рд┐рдЦрдирд╛ ( "рдЕрдЪрддреБрдВрдЧ% рдПрд╕рдПрди" % рдХрдорд╛рдВрдб )
рдкрд░рд┐рдгрд╛рдо = рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ред рд░реАрдбрд▓рд╛рдЗрди ( ) ред рдкрдЯреНрдЯреА ( )
рдЕрдЧрд░ рдкрд░рд┐рдгрд╛рдо ! = 'рдареАрдХ рд╣реИ' :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реИ" )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -
pyserial рдореЙрдбреНрдпреВрд▓:
рдкрд╛рдЗрдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдСрди / рдСрдл рдлреНрд▓реИрд╢рд░ рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ:
python achtung.py /dev/tty.usbserial-A900FYDU ON
python achtung.py /dev/tty.usbserial-A900FYDU OFF
рдЬреЗрдирдХрд┐рдВрд╕ рд╕реАрдЖрдИ рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдЬреЗрдирдХрд┐рдВрд╕рдкреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╛рдердорд┐рдХ рд╣реЛрдЧреАред рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрдирд╛:
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬреЗрдирдХрд┐рдВрд╕рд╛рдкреА
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА:
#! / usr / bin / env рдЕрдЬрдЧрд░
"" "
рдиреМрдХрд░реА рдареАрдХ рди рд╣реЛрдиреЗ рдкрд░ рдЬреЗрдирдХрд┐рдВрд╕ рдЬреЙрдм рд╕реНрдЯреЗрдЯрд╕ рдФрд░ рдЕрд▓рд╛рд░реНрдо рдЪрд▓рд╛рдПрдВред
"" "
рдЖрдпрд╛рдд os
рдЖрдпрд╛рдд sys
рдЖрдпрд╛рдд рдХрд╛ рд╕рдордп
рдЖрдпрд╛рдд рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ
рдЬреЗрдирдХрд┐рдВрд╕рдкреА рд╕реЗред рдЬреЗрдирдХреАрдВрд╕ рдЖрдпрд╛рдд рдЬреЗрдирдХрд┐рдВрд╕
рдЬреЗрдирдХрд┐рдВрд╕рдкреА рд╕реЗред рдЕрдкрд╡рд╛рдж JenkinsAPIException рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ
URL = 'http://jenkins.example.ru/'
USERNAME = 'рдЬреЗрдирдХреАрдВрд╕'
рдкрд╛рд╕рд╡рд░реНрдб = 'рдЧреБрдкреНрдд'
рдЬреЙрдмреНрд╕ = [ 'рдмрд┐рд▓реНрдб' , 'рдЯреЗрд╕реНрдЯ' , 'рд▓рд┐рдВрдЯ' ]
TTY = '/dev/tty.usbserial-A900FYDU'
def job_failed ( рдХрдиреЗрдХреНрдЯ, job_name ) :
"" "
рдмреВрд▓рд┐рдпрди рдиреМрдХрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рд╕рдЪ - рд╕рдлрд▓рддрд╛, рдЧрд▓рдд - рдЕрд╕рдлрд▓)ред
"" "
рдЕрдЧрд░ job_name рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ :
рд╕рдЪ рд▓реМрдЯрд╛рдУ
last_build = рдХрдиреЗрдХреНрдЯ [ job_name ] ред get_last_build ( )
рдЕрдЧрд░ last_buildред is_running ( ) :
рдЭреВрдард╛ рд▓реМрдЯрдирд╛
build_status = last_buildред get_status ( )
рдЕрдЧрд░ build_status рдореЗрдВ ( 'FAIL' , 'FAILED' , 'FAILURE' , 'ERROR' , 'REGRESSION' ) :
рд╕рдЪ рд▓реМрдЯрд╛рдУ
рдЭреВрдард╛ рд▓реМрдЯрдирд╛
def send_to_transmitter ( рдбрд┐рд╡рд╛рдЗрд╕, рдХрдорд╛рдВрдб ) :
"" "
рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдкрд░ рдорд░реЗрдВред
"" "
рдбрд┐рд╡рд╛рдЗрд╕ред рд▓рд┐рдЦрдирд╛ ( "рдЕрдЪрддреБрдВрдЧ% рдПрд╕рдПрди" % рдХрдорд╛рдВрдб )
рдкрд░рд┐рдгрд╛рдо = рдЙрдкрдХрд░рдгред рд░реАрдбрд▓рд╛рдЗрди ( ) ред рдкрдЯреНрдЯреА ( )
рдЕрдЧрд░ рдкрд░рд┐рдгрд╛рдо ! = 'рдареАрдХ рд╣реИ' :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реИ" )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рдЕрдЧрд░ __name__ == '__main__' :
рдпрджрд┐ рдУрдПрд╕ рдирд╣реАрдВ рд╣реИ ред рдкрде ред рдореМрдЬреВрдж рд╣реИ ( TTY ) :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдбрд┐рд╡рд╛рдЗрд╕ '% s' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ" % TTY )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
рдХрдиреЗрдХреНрдЯ = рдЬреЗрдирдХрд┐рдВрд╕ ( URL, USERNAME, PASSWORD )
рдпрджрд┐ рдХреЛрдИ ( job_failed ( рдХрдиреЗрдХреНрдЯ, job_name ) рдЬреЙрдм_name рдХреЗ рд▓рд┐рдП JOBS рдореЗрдВ ) :
рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ = рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХред рд╕реАрд░рд┐рдпрд▓ ( TTY, 9600 )
рдЕрдЧрд░ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╣реИред рд░реАрдбрд▓рд╛рдЗрди ( ) ред рдкрдЯреНрдЯреА ( ) ! = 'рд░реЗрдбреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░' :
рдкреНрд░рд┐рдВрдЯ ( "рддреНрд░реБрдЯрд┐: рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рд╣реИ" )
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
send_to_transmitter ( рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░, 'рдЪрд╛рд▓реВ' )
рд╕рдордп ред рдиреАрдВрдж ( 5 )
send_to_transmitter ( рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░, 'OFF' )
рд╕рд┐рд╡рд╛рдп рдЬреЗрдирдХрд┐рдВрд╕рдПрдкреАрдЖрдИрдПрдХреНрд╕ рдЕрдкрд╡рд╛рдж:
рд╕рд┐рд╕ ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ ( 1 )
рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЗрдирдХрд┐рдиреНрд╕ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░, рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╛рдВрдЪ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЪрдордХрддреА рд░реЛрд╢рдиреА рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ (рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд▓рдХ рдЭрдкрдХреЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗ рдХрд┐ рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛)ред рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди 11:00 рд╕реЗ 20:00 рдмрдЬреЗ рддрдХ рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдореЗрдВ (рд╣рдорд╛рд░реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдШрдВрдЯреЗ) рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд░рд╛рдд рдпрд╛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдкрд░ рдлреНрд▓реИрд╢рд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдмреЗрд╢рдХ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдбрд╛рд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЬреЗрдирдХрд┐рдВрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдпрджрд┐ рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╡рд╣ рдЦреБрдж рдПрдХ рдлреНрд▓реИрд╢рд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдкрд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ: рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрд┐рд╕реА рднреА рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдЦреНрдд рд╡рд░реНрдЬрд┐рдд рд╣реИред
рд▓рд╛рдн!
рд╕рдм рдХреБрдЫ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕рдордп рдкрд░ рдПрдХ рд╣рдВрд╕рдореБрдЦ рдкрд▓рдХ рдХреЗ рд╕рд╛рде, рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдХрд╛рдо рдХрд░рдиреЗ, рдФрд░ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреНрд░рд╕рдиреНрди рдХрд░рддрд╛ рд╣реИ (рдмрд┐рд▓реНрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рдмрдирд╛рддрд╛ рд╣реИ)ред
рд╕реНрд░реЛрдд:
https://github.com/dreadatour/jenkins-achtungрдЕрдкрдбреЗрдЯ : рдбрд┐рд╡рд╛рдЗрд╕ рдСрдкрд░реЗрд╢рди рд╡реАрдбрд┐рдпреЛ: