рдПрдХ рдмрд╛рд░ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо, рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рдерд╛ рдФрд░ рдХреЗрд╡рд▓ рдЕрдореАрд░ рд▓реЛрдЧ рд╣реА рдЙрдиреНрд╣реЗрдВ рдЦрд░реАрдж рд╕рдХрддреЗ рдереЗред рдЖрдЬ рдмрд╛рдЬрд╛рд░ рдкрд░ рдЖрдк рдкреНрд░рдХрд╛рд╢, рд╕реЙрдХреЗрдЯ, рд╡реЗрдВрдЯрд┐рд▓реЗрд╢рди, рдкрд╛рдиреА рдХреА рдЖрдкреВрд░реНрддрд┐ рдФрд░ рдЕрдиреНрдп рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдВрд╕рд░, рдмрдЯрди / рд╕реНрд╡рд┐рдЪ рдФрд░ рдПрдХреНрдЪреБрдПрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рд╕реНрддреА рдХрд┐рдЯ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐
рд╕рдмрд╕реЗ krivoruky DIY-shnik рд╕реБрдВрджрд░ рдФрд░ рд╕рд╕реНрддреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдШрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЙрдкрдХрд░рдг рдпрд╛ рддреЛ рд╕реЗрдВрд╕рд░ рдпрд╛ рдПрдХреНрдЪреБрдПрдЯрд░ рд╣реИрдВред рд╡реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ "рдореЛрд╢рди рд╕реЗрдВрд╕рд░ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдЪрд╛рд▓реВ рдХрд░реЗрдВ" рдпрд╛ "рдирд┐рдХрд╛рд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдкреВрд░реЗ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреЛ рдмреБрдЭрд╛ рджреЗрддрд╛ рд╣реИ"ред рд▓реЗрдХрд┐рди рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ рдЖрдИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрдЙрдЯрд▓реЗрдЯ рдореЗрдВ рддрд╛рдкрдорд╛рди рдФрд░ рдЖрд░реНрджреНрд░рддрд╛, рдпрд╛ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╢рдХреНрддрд┐ рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдл рд╣реИред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ рдкрд▓реНрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рд╡рд╛рдЯрд░ рдореАрдЯрд░ рд▓рдЧрд╛рдпрд╛ред рдПрдХ рд░реАрдб рд╕реНрд╡рд┐рдЪ рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдкрд░реНрдХ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдмрдЪреА рд╣реИ рдЬреЛ рддрд╛рд░реЛрдВ рд╕реЗ рдЪрд┐рдкрдХреА рд╣реБрдИ рд╣реИ рдФрд░ рдЙрд╕рд╕реЗ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдкреНрддрд╛рд╣ рдХреЗ рдШрдВрдЯреЗ рдФрд░ рджрд┐рди рддрдХ рдкрд╛рдиреА рдХреА рдЦрдкрдд рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдореЗрдВ рдкрд╛рдиреА рдХреЗ рд▓рд┐рдП рдХрдИ рд░рд╛рдЗрдЬрд░ рд╣реИрдВ, рддреЛ рдПрдХ рдЯреЙрд░реНрдЪ рдкрд░ рд╣рд╛рд░реНрдб-рдЯреВ-рдкрд╣реБрдВрдЪ рдирд┐рдЪреЗ рдкрд░ рдЪрдврд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рднреА рдореМрдЬреВрджрд╛ рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг ESP8266 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдкрд╛рдиреА рдХреЗ рдореАрдЯрд░ рд╕реЗ рджрд╛рд▓реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ MQTT рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕рд░реНрд╡рд░ рдкрд░ рд░реАрдбрд┐рдВрдЧ рднреЗрдЬрддрд╛ рд╣реИред рд╣рдо uasyncio рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдкреАрдереЙрди рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░реЗрдВрдЧреЗред рдлрд░реНрдорд╡реЗрдпрд░ рдмрдирд╛рддреЗ рд╕рдордп, рдореБрдЭреЗ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдЖрдИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рднреА рдЪрд░реНрдЪрд╛ рдХрд░реВрдБрдЧрд╛ред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
рдпреЛрдЬрдирд╛

рдкреВрд░реЗ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рджрд┐рд▓ ESP8266 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдИрдПрд╕рдкреА -12 рдореВрд▓ рд░реВрдк рд╕реЗ рдпреЛрдЬрдирд╛рдмрджреНрдз рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рджреЛрд╖рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛ред рдореБрдЭреЗ ESP-07 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрддреЛрд╖ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдЙрдкрд▓рдмреНрдз рдерд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╡реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдПрдВрдЯреАрдирд╛ рдореЗрдВ рд╣реИ - рдИрдПрд╕рдкреА -12 рдореЗрдВ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ, рдФрд░ рдИрдПрд╕рдкреА -07 рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рдИрдлрд╛рдИ рдПрдВрдЯреАрдирд╛ рдХреЗ рдмрд┐рдирд╛ рднреА, рдореЗрд░реЗ рдмрд╛рдерд░реВрдо рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдорд╛рдирдХ рд╣реИ:
- рдПрдХ рдирд┐рд▓рдВрдмрд┐рдд рдФрд░ рдПрдХ рд╕рдВрдзрд╛рд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд░реАрд╕реЗрдЯ рдмрдЯрди (рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреЛрдиреЛрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ)
- рд╕рдХреНрд╖рдо рд╕рдВрдХреЗрдд (CH_PD) рд╕рддреНрддрд╛ рдореЗрдВ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛
- GPIO15 рдЬрдореАрди рдкрд░ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЗрд╕ рдкреИрд░ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ
рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдореЛрдб рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ GPIO2 рдХреЛ рдЬрдореАрди рдкрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдмреВрдЯ рдмрдЯрди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕ рдкрд┐рди рдХреЛ рд╕рддреНрддрд╛ рдореЗрдВ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
GPIO2 рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ - рдЬрдм рдмрд┐рдЬрд▓реА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдпрд╛ рдПрдХ рд░реАрд╕реЗрдЯ рдХреЗ рддреБрд░рдВрдд рдмрд╛рджред рдЗрд╕рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдпрд╛ рддреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд GPIO рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЦреИрд░, рдЪреВрдВрдХрд┐ рд╡рд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмрдЯрди рд╣реИ, рдЖрдк рдЙрд╕ рдкрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдлрд╝рдВрдХреНрд╢рди рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдореИрдВ UART рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рдХрдВрдШреА рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ - рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдпреВрдПрд╕рдмреА-рдпреВрдПрдЖрд░рдЯреА рдПрдбрд╛рдкреНрдЯрд░ рдореЗрдВ рдкреНрд▓рдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ 3.3V рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИред рдпрджрд┐ рдЖрдк рдПрдбрд╛рдкреНрдЯрд░ рдХреЛ рдЗрд╕ рд╡реЛрд▓реНрдЯреЗрдЬ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ 5V рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЬрд▓рд╛ рджреЗрдЧрд╛ред
рдореБрдЭреЗ рдмрд╛рдерд░реВрдо рдореЗрдВ рдмрд┐рдЬрд▓реА рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдЙрдЯрд▓реЗрдЯ рдореАрдЯрд░ рд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ 220V рд╕реЗ рдмрд┐рдЬрд▓реА рджреВрдВрдЧрд╛ред рдПрдХ рд╢рдХреНрддрд┐ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ Tenstar рд░реЛрдмреЛрдЯ рд╕реЗ HLK
-PM03 рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ
рдмреНрд▓реЙрдХ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдПрдирд╛рд▓реЙрдЧ рдФрд░ рдкрд╛рд╡рд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рддрдВрдЧ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ GPIO2 рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдПрд▓рдИрдбреА рдкреНрд░рджрд╛рди рдХреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЗрд╕реЗ рдорд┐рд▓рд╛рдк рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ ESP-07 рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ LED, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╣реА GPIO2 рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмреЛрд░реНрдб рдкрд░ рд░рд╣рдиреЗ рджреЛ - рдЕрдЪрд╛рдирдХ рдореИрдВ рдЗрд╕ рдПрд▓рдИрдбреА рдХреЛ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдкрд╛рдиреА рдХреЗ рдореАрдЯрд░ рдХрд╛ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрддрдорд╛рди рд░реАрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рд╣реИ рд╡рд╣ рд╣реИ рджрд╛рд▓реЗрдВ - рдИрдЦ рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЛ рд╣рд░ рд▓реАрдЯрд░ рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ред рд░реАрдб рд╕реНрд╡рд┐рдЪ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ GPIO12 / GPIO13 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд▓-рдЕрдк рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдЪрд╛рд▓реВ рдХрд░реВрдВрдЧрд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдЖрд░ 8 рдФрд░ рдЖрд░ 9 рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛, рдФрд░ рдмреЛрд░реНрдб рдХреЗ рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореИрдВ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдЗрд╕ рдирд┐рд░реАрдХреНрд╖рдг рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЛ рдЬрд▓рд╛рдпрд╛ рди рдЬрд╛рдП рдпрджрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рд╣реИ рдФрд░ рдпреВрдирд┐рдЯ рдХреЛ рдкрд┐рди рдкрд░ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдИрдЦ рд╕реНрд╡рд┐рдЪ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЬрдореАрди рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдзрд┐рдХрддрдо 3.3V / 1000Ohm = 3.3mA рдкреНрд░рддрд┐рд░реЛрдзрдХ рдХреЗ рд╕рд╛рде рдмрд╣реЗрдЧрд╛)ред
рдпрд╣ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдмрд┐рдЬрд▓реА рдЪрд▓реА рдЬрд╛рдП рддреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдЖрд░рдВрдн рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕рдВрдЪрд╛рд▓рдирд╢реАрд▓рддрд╛ рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдпрджрд┐, рдкреНрд░рдХрд╛рд╢ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ (рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рддреЛ рдкрд╛рдиреА рдХрд╛ рдореАрдЯрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдиреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ I2C рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдореЗрдореЛрд░реА рдЪрд┐рдк рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд▓реНрдпреВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореБрдЭреЗ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдореБрдЭреЗ рдХреЗрд╡рд▓ 2 рдирдВрдмрд░ (рдЧрд░реНрдо рдФрд░ рдардВрдбреЗ рдкрд╛рдиреА рдХреЗ рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд▓реАрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдореЙрдбреНрдпреВрд▓ рднреА рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЪрдХреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд▓рд╛рдЦ рддрдХ рдХреЗ рд▓рд┐рдП, 100 рд╣рдЬрд╛рд░ рдЪрдХреНрд░ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓рд╛рдЦ рдмрд╣реБрдд рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ 4 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ 500 рдХреНрдпреВрдмрд┐рдХ рдореАрдЯрд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкрд╛рдиреА рдХрд╛ рд╕реЗрд╡рди рдХрд┐рдпрд╛, рдпрд╣ 500 рд╣рдЬрд╛рд░ рд▓реАрдЯрд░ рд╣реИ! рдФрд░ рдлреНрд▓реИрд╢ рдореЗрдВ 500 рд╣рдЬрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВред рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдардВрдбрд╛ рдкрд╛рдиреА рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд░ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рдЪрд┐рдк рдХреЛ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рдХрд▓рд╛ рд╣реИ рдХрд┐ FRAM рдЪрд┐рдкреНрд╕ рд╣реИрдВред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рд╡рд╣реА I2C EEPROM рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд░реАрд░рд╛рдЗрдЯ рд╕рд╛рдЗрдХрд▓ (рд▓рд╛рдЦреЛрдВ рдХреА рд╕реИрдХрдбрд╝реЛрдВ) рд╣реИред рдпрд╣ рдмрд╕ рддрдм рддрдХ рд╣реИ рдЬрдм рддрдХ рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдЯреЛрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 24LC512 рдЦрдбрд╝реЗ рд╣реЛрдВрдЧреЗред
рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб
рд╢реБрд░реВ рдореЗрдВ, рдореИрдВрдиреЗ рдШрд░ рдкрд░ рдПрдХ рд╢реБрд▓реНрдХ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИред рдЗрд╕рд▓рд┐рдП, рдмреЛрд░реНрдб рдХреЛ рдПрдХрддрд░рдлрд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдмрд╛рдж рдПрдХ рд▓реЗрдЬрд╝рд░ рдЖрдпрд░рди рдФрд░ рдПрдХ рд╕реЛрд▓реНрдбрд░ рдорд╛рд╕реНрдХ (рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЖрдИрдПрд▓ faut рдирд╣реАрдВ рдерд╛) рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЪреАрдиреА рд╕реЗ рдмреЛрд░реНрдб рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдмреЛрд░реНрдб рдХреЛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ I2C рдмрд╕ рдореЗрдВ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдЪрд┐рдк рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмреЛрд░реНрдб рдкрд░ рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЦреИрд░, рдЪреВрдВрдХрд┐ рдореИрдВ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рдмреЛрд░реНрдбреЛрдВ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛ рдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛ рдПрдХрддрд░рдлрд╛ рдмреЛрд░реНрдб рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП I2C рдХреА рд▓рд╛рдЗрдиреЗрдВ рдмреЛрд░реНрдб рдХреЗ рдкреАрдЫреЗ рдХреА рддрд░рдл рд╣реА рд╣реИрдВред
рдПрдХ рдмрдбрд╝реЗ рдЬрдВрдмреЛ рдХреЛ рдПрдХ рддрд░рдлрд╛ рддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрдпреЛрдВрдХрд┐ рдмреЛрд░реНрдб рдПрдХ рддрд░рдл рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рдерд╛, рдкрдЯрд░рд┐рдпреЛрдВ рдФрд░ рдПрд╕рдПрдордбреА рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рддрд░рдл рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдШрдЯрдХреЛрдВ, рдХрдиреЗрдХреНрдЯрд░реНрд╕ рдФрд░ рджреВрд╕рд░реЗ рдкрд░ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ред рдЬрдм рдореБрдЭреЗ рдПрдХ рдорд╣реАрдиреЗ рдореЗрдВ рдмреЛрд░реНрдб рдорд┐рд▓реЗ, рддреЛ рдореИрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ рдФрд░ рд╕рд╛рдордиреЗ рдХреА рддрд░рдл рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЛ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдмрд╛рдд рдЖрдИ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд▓рд╕ рдФрд░ рдорд╛рдЗрдирд╕ рдХрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рддрд▓рд╛рдХ рд╣реБрдЖ рдерд╛ред рдореБрдЭреЗ рдХреВрджрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдореВрд╣рд┐рдХ рдЦреЗрддреЛрдВ рдореЗрдВ рдЬрд╛рдирд╛ рдерд╛ред рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрд╛рд░реЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреВрдЯ рдмрдЯрди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрдореАрди рдХреЛ рдмреЛрд░реНрдб рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреВрд╕рд░реА рдкрд░рдд рдкрд░ рдПрдХ рдЯреНрд░реИрдХ рдЦреАрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛)ред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛

рдЖрд╡рд╛рд╕
рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЖрд╡рд╛рд╕ рд╣реИред 3D рдкреНрд░рд┐рдВрдЯрд░ рдХреЗ рд╕рд╛рде, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ - рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рд╕рд╣реА рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдмреЙрдХреНрд╕ рдЦреАрдВрдЪрд╛ рдФрд░ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрдЯрдЖрдЙрдЯ рдмрдирд╛рдПред рдХрд╡рд░ рдЫреЛрдЯреЗ рд╢рд┐рдХрдВрдЬрд╛ рдкрд░ рд╢рд░реАрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдмреВрдЯ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдмрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рдлреНрд░рдВрдЯ рдкреИрдирд▓ рдкрд░ рд▓рд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ" рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рдмрдЯрди рд░рд╣рддрд╛ рд╣реИред

рдорд╛рдорд▓реЗ рдХреЗ рдЕрдВрджрд░ рдРрд╕реЗ рд╕реНрдЯрдВрдк рднреА рд╣реИрдВ рдЬрд┐рди рдкрд░ рдмреЛрд░реНрдб рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдПрдо 3 рд╕реНрдХреНрд░реВ рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдмреЛрд░реНрдб рдкрд░ рдЕрдзрд┐рдХ рдЬрдЧрд╣ рдирд╣реАрдВ рдереА)
рдЬрдм рдореИрдВ рдХреЗрд╕ рдХреЗ рдкрд╣рд▓реЗ рдлрд┐рдЯрд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рдерд╛ рддрдм рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рдорд╛рдирдХ рджреЛ-рд▓рд╛рдЗрди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реБрдИ, рд▓реЗрдХрд┐рди рдПрдХ OLED рдкреНрд░рджрд░реНрд╢рди SSD1306 128x32 рдЬреАрдореНрдмрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╣рд░ рджрд┐рди рдЙрд╕реЗ рджреЗрдЦрдирд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд░реЛрд▓ рд╣реЛрдЧрд╛ред
рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реБрдП рдФрд░ рдЙрд╕рд╕реЗ рддрд╛рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдореИрдВрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЫрдбрд╝реА рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмреЗрд╕рдмреЛрд░реНрдб рдХреЗ рдиреАрдЪреЗ - рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдмрдЯрди, рддрд▓ рдкрд░ рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рджреЗрд░ рд╕реЗ рдЖрдпрд╛ рдФрд░ рдмрдЯрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрд░реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛ред
рдЙрдкрдХрд░рдг рдкреВрд░реНрдг рд╣реИред рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЙрдбреНрдпреВрд▓ рд╣реЙрдЯ-рдореЗрд▓реНрдЯ рдиреЛрдЬрд▓ рд╕реЗ рд╕рд░реЗрд╕ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ


рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЗрдбреАрдкреАрд╡реА рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдЪрд▓реЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рднрд╛рдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдРрд╕реЗ рдЫреЛрдЯреЗ рд╢рд┐рд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рдпрдерди рднрд╛рд╖рд╛ (
рдорд╛рдЗрдХреНрд░реЛрдкрд┐рдереЙрди ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛
рд╣реВрдВ - рдХреЛрдб рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕реНрддрд░ рддрдХ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рдм рдХреБрдЫ рдЕрдЬрдЧрд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╕рднреА рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдирд╣реАрдВ - рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрдкрдХрд░рдг рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ
- рд▓реАрдЯрд░ рдЯрд┐рдХ рдФрд░ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд╡реИрд▓реНрдпреВ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ
- рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдИрдлрд╛рдИ рд╕рд┐рдЧреНрдирд▓ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
- рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдПрдХ рдирд┐рдорд┐рд╖ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ
рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛрдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ рдпрджрд┐ рджреВрд╕рд░рд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдмреЗрд╡рдХреВрдл рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреИрдХреНрдЯрд┐ рдХреЛ рдЦрд╛ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдореБрдЭреЗ "рдПрдХ рдФрд░ рд▓реАрдЯрд░ рдЫреВрдЯрдиреЗ рдХреА рд╢реИрд▓реА рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдкреНрд░рджрд░реНрд╢рди рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛" рдпрд╛ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рдИрдлрд╛рдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ"ред рдмреЗрд╢рдХ, рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрд╡рдзрд┐, рдХреЙрд▓ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдпрд╛ рдЪрд░ рдХреЗ рдЧреИрд░-рдкрд░рдорд╛рдгреБ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реАрдорд╛ рдкрд░ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЦреИрд░, рдХреЛрдб рдЬреЛ рд╕рдм рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░реАрдореЗрдкреНрдЯрд┐рд╡ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдФрд░ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдХрд╛ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ
рдореЗрдВ рдХреЙрд░рдЯрд╛рдЗрдиреНрд╕ рдореЙрдбрд▓
рдФрд░ рдпреВрд╕рд╕рд┐рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрд░реБрдЯрд┐рди рдХреЗ рдкрд┐рдЯреЛрдиреЛрд╡рд╕реНрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рд░реНрдл рдПрдХ рдмрдо рд╣реИ - рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдмрд╕ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд╕ рдЕрдкрдирд╛ рддрд░реНрдХ рд▓рд┐рдЦреЗрдВ, рдмрд╕ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХрд┐рди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рднреАрдбрд╝ рдФрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВред рдЕрдм, рдЕрдВрдд рдореЗрдВ рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдХрд╛рдЙрдВрдЯрд░ рдХреНрд▓рд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп EEPROM (value_storage) рд╕реЗ рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд╣реИ рдХрд┐ рдмрд┐рдЬрд▓реА рдХреА рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рд╡рд╕реВрд▓реА рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИред
рдкрд┐рди рдХреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреБрд▓-рдЕрдк рдкрд╛рд╡рд░ рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрджрд┐ рд░реАрдб рд╕реНрд╡рд┐рдЪ рдмрдВрдж рд╣реИ, рддреЛ рдпрд╣ рд▓рд╛рдЗрди рдкрд░ рд╢реВрдиреНрдп рд╣реИ, рдпрджрд┐ рд▓рд╛рдЗрди рдЦреБрд▓реА рд╣реИ, рддреЛ рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд╡рд░ рдореЗрдВ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА, рдпрд╣рд╛рдВ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкрд┐рди рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рдЙрдВрдЯрд░ рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдПрдЧрд╛ред рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ
""" Poll pin and advance value when another litre passed """ async def _switchcheck(self): last_checked_pin_state = self._pin.value()
рд╕рдВрдкрд░реНрдХ рдЙрдЫрд╛рд▓ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 25ms рдХреА рджреЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдХрд┐рддрдиреА рдмрд╛рд░ рдЙрдарддрд╛ рд╣реИ (рдЬрдмрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рд╕реЛ рд░рд╣рд╛ рд╣реИ, рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред рдкреНрд░рддреНрдпреЗрдХ 25ms рдлрд╝рдВрдХреНрд╢рди рдЬрд╛рдЧрддрд╛ рд╣реИ, рдкрд┐рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд░реАрдб рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рдВрдкрд░реНрдХ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рдЙрдВрдЯрд░ рд╕реЗ рдПрдХ рдФрд░ рд▓реАрдЯрд░ рдЧреБрдЬрд░ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
def _another_litre_passed(self): self._value += 1 self._value_changed = True self._value_storage.write(self._value)
рдЕрдЧрд▓реЗ рд▓реАрдЯрд░ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддреБрдЪреНрдЫ рд╣реИ - рдХрд╛рдЙрдВрдЯрд░ рдмрд╕ рдмрдврд╝рддрд╛ рд╣реИред рдЦреИрд░, рдПрдХ рдирдпрд╛ рдореВрд▓реНрдп рдПрдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓рд┐рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, "рдПрдХреНрд╕реЗрд╕рд░реНрд╕" рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
def value(self): self._value_changed = False return self._value def set_value(self, value): self._value = value self._value_changed = False
рдареАрдХ рд╣реИ, рдЕрдм рд╣рдо рдЕрдЬрдЧрд░ рдФрд░ uasync рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕реБрдЦреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВрдЧреЗ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВрдЧреЗ (рдЗрд╕рдХрд╛ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЬреЛ рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ?)
def __await__(self): while not self._value_changed: yield from asyncio.sleep(0) return self.value() __iter__ = __await__
рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд▓реНрдпреВ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рд╕рдордп-рд╕рдордп рдкрд░ рдЙрдарддрд╛ рд╣реИ рдФрд░ _value_changed рдзреНрд╡рдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдордЬрд╛рдХ рдпрд╣ рд╣реИ рдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрд▓ рдкрд░ рд╕реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рд╕реЛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?рд╣рд╛рдВ, рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдЖрдк рдореБрдЭреЗ рдЯреНрд░реЛрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрд╡рдпрдВ рд░реБрдХрд╛рд╡рдЯреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд┐рди рдХреЗ рдмреЗрд╡рдХреВрдл рдкреЛрд▓ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реНрдпрд╡рдзрд╛рди рдкрд╣рд▓реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдереАред ESP8266 рдореЗрдВ, рдЖрдк рдХрд┐рдирд╛рд░реЗ рдкрд░ рдПрдХ рд╡реНрдпрд╡рдзрд╛рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЬрдЧрд░ рдореЗрдВ рдЗрд╕ рд░реБрдХрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╡реНрдпрд╡рдзрд╛рди рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдпрджрд┐ рдХрд╛рдЙрдВрдЯрд░ рдПрдХ рдЧреБрд▓рд╛рдо рдЙрдкрдХрд░рдг рдерд╛ - рдПрдХ рдЬреЛ рдЗрд╕ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ (рдпрд╛ рд╕реМрднрд╛рдЧреНрдп рд╕реЗ?) рдореЗрд░рд╛ рдЙрдкрдХрд░рдг рд╕рдХреНрд░рд┐рдп рд╣реИ, рдЗрд╕реЗ MQTT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ EEPROM рдХреЛ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ - рдЖрдк рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред Micropython.schedule () рдЬреИрд╕реЗ рдмрдиреНрд╕ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ "рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ" рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ "рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ?" рдЕрдЪрд╛рдирдХ рд╣рдо рдЕрднреА рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдБ рдмреАрдЪ рдореЗрдВ рд░реБрдХрд╛рд╡рдЯ рдЖрддреА рд╣реИ рдФрд░ рдЪрд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрд┐рдЧрд╛рдбрд╝ рджреЗрддреА рд╣реИред рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдирдпрд╛ рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди рдЖрдпрд╛, рдЬрдмрдХрд┐ рд╣рдордиреЗ рдЕрднреА рднреА рдкреБрд░рд╛рдиреЗ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдмрд╛рдбрд╝рдиреЗ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░, RuntimeError рдХреНрд░реИрд╢: рд╢реЗрдбреНрдпреВрд▓ рд╕реНрдЯреИрдХ рдкреВрд░реНрдг рдФрд░ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ?
рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдФрд░ uasync рдХреЗ рд╕рд╛рде, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред
рдореИрдВрдиреЗ EEPROM рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛
class EEPROM(): i2c_addr = const(80) def __init__(self, i2c): self.i2c = i2c self.i2c_buf = bytearray(4)
рдЕрдЬрдЧрд░ рдореЗрдВ, рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдЗрдЯреНрд╕ рд╣реИ рдЬреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ ustruct рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рдмрд╛рдЗрдЯ рдХреЗ рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛ред
рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ I2C рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдореЗрдореЛрд░реА рд╕реЗрд▓ рдПрдбреНрд░реЗрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдореЗрдВ рд▓рдкреЗрдЯрд╛
class EEPROMValue(): def __init__(self, i2c, eeprom_addr): self._eeprom = EEPROM(i2c) self._eeprom_addr = eeprom_addr def read(self): return self._eeprom.read(self._eeprom_addr) def write(self, value): self._eeprom.write(self._eeprom_addr, value)
I2C рд╡рд╕реНрддреБ рд╕реНрд╡рдпрдВ рдРрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рд╣реИ
i2c = I2C(freq=400000, scl=Pin(5), sda=Pin(4))
рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ - рдПрдордХреНрдпреВрдЯреАрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдареАрдХ рд╣реИ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ
рддреИрдпрд╛рд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗред
рд╕рднреА рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреЛ рдХреНрд▓рд╛рд╕ рдХрд╛рдЙрдВрдЯрд░рдХреНрдпреВрдХреНрдпреВрдПрд▓рд┐рдПрдВрдЯ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдордХреНрдпреВрдЯреАрд╕реАрдПрд▓рд┐рдПрдВрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЪрд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рдкрд░рд┐рдзрд┐ рд╕реЗ
рдпрд╣рд╛рдВ, рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдФрд░ рдмрдЯрди рдХреЗ рдкрд┐рди рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдардВрдбреЗ рдФрд░ рдЧрд░реНрдо рдкрд╛рдиреА рдХреЗ рдореАрдЯрд░ рдХреА рд╡рд╕реНрддреБрдПрдВ рднреАред
рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ
def __init__(self): self.internet_outage = True self.internet_outages = 0 self.internet_outage_start = ticks_ms() with open("config.txt") as config_file: config['ssid'] = config_file.readline().rstrip() config['wifi_pw'] = config_file.readline().rstrip() config['server'] = config_file.readline().rstrip() config['client_id'] = config_file.readline().rstrip() self._mqtt_cold_water_theme = config_file.readline().rstrip() self._mqtt_hot_water_theme = config_file.readline().rstrip() self._mqtt_debug_water_theme = config_file.readline().rstrip() config['subs_cb'] = self.mqtt_msg_handler config['wifi_coro'] = self.wifi_connection_handler config['connect_coro'] = self.mqtt_connection_handler config['clean'] = False config['clean_init'] = False super().__init__(config) loop = asyncio.get_event_loop() loop.create_task(self._heartbeat()) loop.create_task(self._counter_coro(self.cold_counter, self._mqtt_cold_water_theme)) loop.create_task(self._counter_coro(self.hot_counter, self._mqtt_hot_water_theme)) loop.create_task(self._display_coro())
Mqtt_as рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдСрдкрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╢рдмреНрджрдХреЛрд╢ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣рдореЗрдВ рд╕реВрдЯ рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ config.txt рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╛рди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд░рд┐рд╡рд╛рдЗрдЬ рдХрд░рддрд╛ рд╣реИред
рдХреЛрдб рдХрд╛ рдЖрдЦрд┐рд░реА рдмреНрд▓реЙрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдЪрд▓рд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреЛрд░рдЯрд╛рдЗрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ
async def _counter_coro(self, counter, topic):
рдПрдХ рдЪрдХреНрд░ рдореЗрдВ, рдХреЛрд░реБрдЯрд┐рди рдПрдХ рдирдП рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдПрдордХреНрдпреВрдЯреАрдЯреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдХреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рднреЗрдЬрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдкрд╛рдиреА рдХрд╛рдЙрдВрдЯрд░ рд╕реЗ рдкреНрд░рд╡рд╛рд╣ рди рд╣реЛред
MQTTClient рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рдИрдлрд╛рдИ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдЦреЛ рдЬрд╛рдиреЗ рдкрд░ рдкреБрди: рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рд╡рд╛рдИрдлрд╛рдИ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп wifi_connection_handler рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ
async def wifi_connection_handler(self, state): self.internet_outage = not state if state: self.dprint('WiFi is up.') duration = ticks_diff(ticks_ms(), self.internet_outage_start) // 1000 await self.publish_debug_msg('ReconnectedAfter', duration) else: self.internet_outages += 1 self.internet_outage_start = ticks_ms() self.dprint('WiFi is down.') await asyncio.sleep(0)
рдлрд╝рдВрдХреНрд╢рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ (рдЗрдВрдЯрд░рдиреЗрдЯ_рдЖрдЙрдЯреЗрдЬ) рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреА рдЕрд╡рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдиреАрдВрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рд╢рд░реАрд░ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╛рдИрдлрд╛рдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ (рд╕рд░реНрд╡рд░) рдХреЗ рд╕рд╛рде рднреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
async def mqtt_connection_handler(self, client): await client.subscribe(self._mqtt_cold_water_theme) await client.subscribe(self._mqtt_hot_water_theme)
рдпрд╣рд╛рдВ рд╣рдо рдХрдИ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ - рд╕рд░реНрд╡рд░ рдореЗрдВ рдЕрдм рдЙрдЪрд┐рдд рд╕рдВрджреЗрд╢ рднреЗрдЬрдХрд░ рд╡рд░реНрддрдорд╛рди рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
def mqtt_msg_handler(self, topic, msg): topicstr = str(topic, 'utf8') self.dprint("Received MQTT message topic={}, msg={}".format(topicstr, msg)) if topicstr == self._mqtt_cold_water_theme: self.cold_counter.set_value(int(msg)) if topicstr == self._mqtt_hot_water_theme: self.hot_counter.set_value(int(msg))
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╖рдп (рд╕рдВрджреЗрд╢ рдХрд╛ рдирд╛рдо) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ
рдпрджрд┐ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдбреАрдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢ рдмрдирд╛рддрд╛ рдФрд░ рднреЗрдЬрддрд╛ рд╣реИред
async def publish_debug_msg(self, subtopic, msg): await self.publish_msg("{}/{}".format(self._mqtt_debug_water_theme, subtopic), str(msg))
рдЗрддрдирд╛ рдкрд╛рда, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдПрдХ рдПрд▓рдИрдбреА рдХреЛ рдмреНрд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдВ
рдореИрдВрдиреЗ 2 рдмреНрд▓рд┐рдВрдХ рдореЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рдЦреЛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдпрд╣ рдмрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ), рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдЬрд▓реНрджреА рд╕реЗ рдЭрдкрдХреА рд▓реЗрдЧрд╛ред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЭрдкрдХрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдпрд╣рд╛рдВ рдЖрдк рдЕрдиреНрдп рдмреНрд▓рд┐рдВрдХрд┐рдВрдЧ рдореЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдПрд▓рдИрдбреА рдмрд╣реБрдд рд▓рд╛рдбрд╝ рдкреНрдпрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред рд╣рдо рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд▓рд╣рд░рд╛рдпрд╛ред
async def _display_coro(self): display = SSD1306_I2C(128,32, i2c) while True: display.poweron() display.fill(0) display.text("COLD: {:.3f}".format(self.cold_counter.value() / 1000), 16, 4) display.text("HOT: {:.3f}".format(self.hot_counter.value() / 1000), 16, 20) display.show() await asyncio.sleep(3) display.poweroff() while self.button(): await asyncio.sleep_ms(20)
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдмрд╛рдд рдХреА - рдХреЛрд░рдЯрд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд┐рддрдирд╛ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХред рдпрд╣ рдЫреЛрдЯрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред Corutin рд╕рд┐рд░реНрдл рдПрдХ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ 3 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рд╡рд░реНрддрдорд╛рди рдореАрдЯрд░ рд░реАрдбрд┐рдВрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдЕрднреА рднреА рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВред рдпрд╣рд╛рдВ рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдкреВрд░реЗ рдлрд╝рд╛рд░реНрдо рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ (рдкреБрдирдГ)ред рдореБрдЦреНрдп рдЪрдХреНрд░ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╣реИ - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯрд┐рдкреНрдкрдгреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ
async def main(self): while True: try: await self._connect_to_WiFi() await self._run_main_loop() except Exception as e: self.dprint('Global communication failure: ', e) await asyncio.sleep(20) async def _connect_to_WiFi(self): self.dprint('Connecting to WiFi and MQTT') sta_if = network.WLAN(network.STA_IF) sta_if.connect(config['ssid'], config['wifi_pw']) conn = False while not conn: await self.connect() conn = True self.dprint('Connected!') self.internet_outage = False async def _run_main_loop(self):
рдЦреИрд░, рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рд╡рд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдпрд╣ рд╕рдм рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
client = CounterMQTTClient() loop = asyncio.get_event_loop() loop.run_until_complete(client.main())
рдореЗрд░реА рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмрди рдЧрдпрд╛ рд╣реИ
рддреЛ, рд╕рднреА рдХреЛрдб рд╣реИред рдореИрдВрдиреЗ рдЕрдордкреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХреАрдВ - рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЖрдВрддрд░рд┐рдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ (рдЬреЛ рдХрд┐ рдИрдПрд╕рдкреА -07 рдореЗрдВ рд╣реА рд╣реИ) рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдореИрдВрдиреЗ mqtt_as, uasyncio, ssd1306 рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (mqtt_as рдХреЗ рдЕрдВрджрд░ рдкреНрд░рдпреБрдХреНрдд) рдХреЛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛, рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ ... рд╣рдо MemoryError рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рдореЗрдореЛрд░реА рдХрд╣рд╛рдВ рд▓реАрдХ рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрддрдирд╛ рд╣реА рдореИрдВрдиреЗ рдкреНрд░рд┐рдВрдЯ рдХреЗ рдбрд┐рдмрдЧ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА, рдкрд╣рд▓реЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реБрдИред рдПрдХ рдЫреЛрдЯреА рд╕реА рдЧреБрдЧрд▓реА рдиреЗ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдХреЗрд╡рд▓ 30kb рдореЗрдореЛрд░реА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ 65kb рдХреЛрдб (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде) рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ micropython .py рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реАрдзреЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реИред рдФрд░ рдпрд╣ рд╕реАрдзреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдИрдЯреЗрдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рд╕рдВрдХрд▓рдХ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд░реИрдо рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЪрд╛рд▓ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╕рдВрдХрд▓рди рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЖрдк рдПрдХ рдмрдбрд╝реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдорд╛рдкреНрдд рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдЗрдХреНрд░реЛрдкрд┐рдереЙрди рдлрд░реНрдорд╡реЗрдпрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░
рдПрдордкреАрдЖрдИ-рдХреНрд░реЙрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред
рдореИрдВрдиреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдирд╣реАрдВ рд▓рд┐рдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕рд╣рд┐рдд) рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛
mpy-cross water_counter.py
рдпрд╣ рдХреЗрд╡рд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .mpy рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд .py рдХреЛ рдкрд╣рд▓реЗ рдбрд┐рд▓реАрдЯ рдХрд░рдиреЗ рдХреА рднреВрд▓ рди рдХрд░реЗрдВред
рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо (IDE?) ESPlorer рдореЗрдВ рд╕рднреА рд╡рд┐рдХрд╛рд╕ рдХрд┐рдПред рдпрд╣ рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рддреБрд░рдВрдд рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рднреА рддрд░реНрдХ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдлрд╝рд╛рдЗрд▓ water_counter.py (.mpy) рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЕрдкрдиреЗ рдЖрдк рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореЗрдирдлреНрд░реЗрдо рдирд╛рдордХ рдПрдХ рдФрд░ рдлрд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд .mpy рдирд╣реАрдВред рдпрд╣рд╛рдБ рдЗрд╕рдХреА рддреБрдЪреНрдЫ рд╕рд╛рдордЧреНрд░реА рд╣реИ
import water_counter
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЦрддрд░рдирд╛рдХ рд░реВрдк рд╕реЗ рдХрдо рдореБрдХреНрдд рдореЗрдореЛрд░реА рд╣реИ - рд▓рдЧрднрдЧ 1kbред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИред
рдпреЗ рд░рд╣реА рдмрд╛рддред рднрд▓реЗ рд╣реА рдлрд╛рдЗрд▓реЗрдВ рдмрд╛рдЗрдЯреЗрдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдЕрднреА рднреА рд░реИрдо рдореЗрдВ рд▓реЛрдб рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдкреНрдереЙрди рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рд╕реЗ рд╕реАрдзреЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реАрдзреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ рдореЗрд░реА рдиреЗрдЯрдмреБрдХ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд▓рд┐рдпрд╛ (рдХреЗрд╡рд▓ рд╡рд╣рд╛рдВ рдореБрдЭреЗ рд▓рд┐рдирдХреНрд╕ рдорд┐рд▓рд╛)ред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдИрдПрд╕рдкреА рдУрдкрди рдПрд╕рдбреАрдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рдпрд╣ рдмрд╛рдд ESP8266 рдХреЗ рддрд╣рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддреА рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдореИрдВрдиреЗ рд╕реЗрдЯрд┐рдВрдЧ STANDALONE = Yes рдЪреБрдирд╛)
- рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдорд╛рдЗрдХреНрд░реЛрдкрд┐рдереЙрди рд╢реЙрд░реНрдЯреНрд╕
- Micropython рдЯреНрд░реА рдХреЗ рдЕрдВрджрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ / esp8266 / рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЧрд┐рд░рд╛рдПрдВ
- рд╣рдо рдкреЛрд░реНрдЯ / esp8266 / README.md рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ
- рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ (рдореИрдВ ESP8266Fasher рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рдкрд╛рдпрдерди рдПрд╕реНрдХреВрд▓ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ)
рдпрд╣реА рд╣реИ, рдЕрдм 'рдЖрдпрд╛рдд ssd1306' рдлрд░реНрдорд╡реЗрдпрд░ рд╕реЗ рд╕реАрдзреЗ рдХреЛрдб рдмрдврд╝рд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд░реИрдо рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдХреЗрд╡рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдкреБрдирдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓ рдореЗрд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 8.5kb RAM рдореБрдлреНрдд рд╣реИред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╛рдлреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдореГрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рднреА рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдм рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?
рдареАрдХ рд╣реИ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмреЙрдХреНрд╕ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдбрд┐рд╡рд╛рдЗрд╕ рджреАрд╡рд╛рд░ рд╕реЗ рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХреЗ рд╕рд╛рде рдЦреБрд╢реА рд╕реЗ рдЭрдкрдХрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдмрдХрд┐ рдпрд╣ рд╕рдм рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рд╣реИ (рд╢рд╛рдмреНрджрд┐рдХ рдФрд░ рдЖрд▓рдВрдХрд╛рд░рд┐рдХ рдЕрд░реНрде рдореЗрдВ) рдФрд░ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдордХреНрдпреВрдЯреАрдЯреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдореЗрд░рд╛ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо"
рдорд╛рдЬрд░реНрдбреЛрдореЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░
рдШреВрдо рд░рд╣рд╛ рд╣реИ ред MQTT рдореЙрдбреНрдпреВрд▓ рдпрд╛ рддреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдРрдб-рдСрди рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдореБрдЭреЗ рдЕрдм рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИред рдПрдордХреНрдпреВрдЯреАрдЯреА рдмрд╛рдд рдЖрддреНрдордирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИ - рддрдерд╛рдХрдерд┐рдд рдмреНрд░реЛрдХрд░ - рдПрдХ рд╕рд░реНрд╡рд░ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ MQTT рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдордЪреНрдЫрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ (рдорд╛рдЬрд░реНрдбрдореЛ рдХреА рддрд░рд╣) рд╕рднреА рдПрдХ рд╣реА рдиреЗрдЯрдмреБрдХ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
рдбрд┐рд╡рд╛рдЗрд╕ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдореВрд▓реНрдп рддреБрд░рдВрдд рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдм рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реНрд▓реЗрд╖рдгреЛрдВ рдХреЗ рдЕрдзреАрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рд╕рдм рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдХреМрди рдореЗрдЬрд░рдбреЛрдореЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рдореИрдВ
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЗрди рд▓реЗрдВрд╕ рдЪреИрдирд▓ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рдПрдХ рджреЛрд╕реНрдд рднреА рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдШрд░ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдордЭрджрд╛рд░реА рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд░реЗрдЦрд╛рдВрдХрди рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдпрд╣ рджреИрдирд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЧреНрд░рд╛рдл рд╣реИред

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдд рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдкрд╛рдиреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рд╢реМрдЪрд╛рд▓рдп рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдСрд╕реНрдореЛрд╕рд┐рд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рд░рд╛рдд рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЪреВрд╕рддрд╛ рд╣реИред рд╕реБрдмрд╣ рдореЗрдВ, рдЦрдкрдд рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдПрдХ рдмреЙрдпрд▓рд░ рд╕реЗ рдкрд╛рдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рддрдм рдореИрдВ рд╕реНрдирд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╢рд╣рд░ рдХреЗ рдЧрд░реНрдо рдкрд╛рдиреА рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рднреА рдиреАрдЪреЗ рдХреЗ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдЕрдиреБрд╕реВрдЪреА рд╕реЗ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╢реМрдЪрд╛рд▓рдп рдЬрд╛рдирд╛ 6-7 рд▓реАрдЯрд░ рдкрд╛рдиреА рд╣реИ, рдПрдХ рд╢реЙрд╡рд░ рд▓реЗрдирд╛ - 20-30 рд▓реАрдЯрд░, рдмрд░реНрддрди рдзреЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 20 рд▓реАрдЯрд░, рдФрд░ рд╕реНрдирд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ 160 рд▓реАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдкрд░рд┐рд╡рд╛рд░ рд▓рдЧрднрдЧ 500-600l рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрддреНрд╕реБрдХ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдпрд╣рд╛рдВ рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд▓ рдЦреБрд▓реЗ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде 5 рд╕реЗрдХрдВрдб рдореЗрдВ рд▓рдЧрднрдЧ 1 рд▓реАрдЯрд░ рдХреА рдЧрддрд┐ рд╕реЗ рдкрд╛рдиреА рдмрд╣рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕ рд░реВрдк рдореЗрдВ, рдЖрдВрдХрдбрд╝реЗ рд╕рдВрднрд╡рддрдГ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИрдВред рдорд╛рдЬрд░реНрдбреЛ рдореЗрдВ рдЕрднреА рднреА рджрд┐рди, рд╕рдкреНрддрд╛рд╣ рдФрд░ рдорд╣реАрдиреЗ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЦрдкрдд рдЪрд╛рд░реНрдЯ рджреЗрдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рдЦрдкрдд рдХрд╛ рдЧреНрд░рд╛рдл

рдЕрднреА рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рд╣реА рдбрд╛рдЯрд╛ рд╣реИред рдПрдХ рдорд╣реАрдиреЗ рдореЗрдВ, рдпрд╣ рдЪрд╛рд░реНрдЯ рдЕрдзрд┐рдХ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ - рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓рдо рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдпреЛрдЬрди рддрд╕реНрд╡реАрд░ рдХреЛ рдереЛрдбрд╝рд╛ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕реНрддрдВрдн)ред рдФрд░ рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдиреЛрдВ рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рдХреНрдпреВрдм рдХрдо рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдмрдЧ рд╣реИ рдФрд░ рд╕рднреА рд▓реАрдЯрд░ рд╕реЗрдЯ-рдСрдл рдореЗрдВ рдирд╣реАрдВ рдЧрдП рдереЗред рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣ рдЕрднреА рднреА рд░реЗрдЦрд╛рдВрдХрди рдЦреБрдж рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рдлреЗрдж, рд░рдВрдЧред рд╢рд╛рдпрдж рдореИрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЦрдкрдд рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдл рднреА рдмрдирд╛рдКрдВрдЧрд╛ - рдЕрдЪрд╛рдирдХ рдХреБрдЫ рд▓реАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдкреАрд░рд┐рдпрдбреНрд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ рдЬрдм рдЗрдВрдЯрд░рдиреЗрдЯ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ред рдЬрдмрдХрд┐ рдпрд╣ рд╕рдм рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рдШреВрдо рд░рд╣рд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдЬ, рдореЗрд░рд╛ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдереЛрдбрд╝рд╛ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдШрд░ рдореЗрдВ рдкрд╛рдиреА рдХреА рдЦрдкрдд рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдкрд╣рд▓реЗ рдореИрдВ рдирд╛рд░рд╛рдЬ рдерд╛ "рдлрд┐рд░ рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдорд╣реАрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд╛рдиреА рдкреА рд▓рд┐рдпрд╛", рдЕрдм рдореИрдВ рдЗрд╕ рдЦрдкрдд рдХрд╛ рд╕реНрд░реЛрдд рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реВрдВред
рдХрд┐рд╕реА рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд░реАрдбрд┐рдВрдЧ рджреЗрдЦрдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╡рд╣ рдореАрдЯрд░ рд╕реЗ рд╣реА рдореАрдЯрд░ рджреВрд░ рд╣реЛред рд▓реЗрдХрд┐рди рдмрд╣реБрдд рджреВрд░ рдХреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореИрдВ рдПрдХ рдФрд░ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдХрдИ рд░рд╛рдЗрдЬрд░ рд╣реЛрдВрдЧреЗ, рдФрд░ рдореАрдЯрд░ рд╕реНрд╡рдпрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓реИрдВрдбрд┐рдВрдЧ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рд░рд┐рдореЛрдЯ рд░реАрдбрд┐рдВрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдореИрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рднреА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЛрдЯрд░рдпреБрдХреНрдд рд╡рд╛рд▓реНрд╡реЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдЕрдм рдмреЙрдпрд▓рд░-рд╢рд╣рд░ рдХреЗ рдкрд╛рдиреА рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рджреБрд░реНрдЧрдо рдЬрдЧрд╣ рдореЗрдВ 3 рдирд▓ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдкрдпреБрдХреНрдд рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред рдЦреИрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реАрдХ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИред
рд▓реЗрдЦ рдореЗрдВ рдореИрдВрдиреЗ рдИрдПрд╕рдкреА 8266 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрддрд╛рдпрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдореБрдЭреЗ рдХреЛрд░реЛрдЯреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░рд┐рдереЙрди рдлрд░реНрдорд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рд╛ - рд╕рд░рд▓ рдФрд░ рд╕реБрдВрджрд░ред
рдореИрдВрдиреЗ рдЕрднрд┐рдпрд╛рди рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдХрдИ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдФрд░ рд╕реНрдХреВрд▓реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╢рд╛рдпрдж рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛, рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдПрдХ рдкрд╛рдардХ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рдерд╛ рдХрд┐ рддрдм рддрдХ рдпрд╣ рд╕реЛрдЪрдирд╛ рдЖрд╕рд╛рди рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдерд╛редрд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВредрд╕реНрд░реЛрдд рдХреЛрдбрд╕рд░реНрдХрд┐рдЯ рдФрд░ рдмреЛрд░реНрдбрдХреЗрд╕ рдореЙрдбрд▓