рд╣рдо рдкреАрд╕реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 433MHz рд╡рд╛рдпрд░рд▓реЗрд╕ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдирдорд╕реНрдХрд╛рд░ Geektimes Habrред

рдореЗрд░реА рдЬрдЧрд╣ рдкрд░ 433 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкрд░ рдХрдИ рд╡рд╛рдпрд░рд▓реЗрд╕ рд╕реНрд╡рд┐рдЪ рдШрд░ рдкрд░ рдЬрдорд╛ рд╣реБрдП, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпреЗ рд╕реНрд╡рд┐рдЪ рдЙрдирдХреА рдХрдо рд▓рд╛рдЧрдд рдФрд░ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рд╡реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:



рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╣реБрд╕рд░реНрд╕ рдЪреБрдк рд░рд╣рддреЗ рд╣реИрдВ :), рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред

рд╕рд┐рджреНрдзрд╛рдВрдд


рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд╡рд┐рдЪ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрдорд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╕рд┐рджреНрдз рдЖрд░рдЯреАрдПрд▓-рдПрд╕рдбреАрдЖрд░ рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рд░реЗрдбрд┐рдпреЛ рд╢реМрдХреАрдиреЛрдВ рдХреЗ рд▓рд┐рдП "рд╕реАрдЯреА" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ $ 10 рдХреА рдХреАрдордд рд╡рд╛рд▓рд╛ рдпрд╣ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рд▓рдЧрднрдЧ 50 рд╕реЗ 1250 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рддрдХ рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╖рдп рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрдврд╝реЗрдВ ред

рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ - рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ "рдореЗрдб рдЗрди рдЪрд╛рдЗрдирд╛" (рдЬреЛ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛?) рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЖрд╡реГрддреНрддрд┐ 433 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИред рдЕрдм рдЖрдк рдПрд╕рдбреАрдЖрд░ рд░рд┐рд╕реАрд╡рд░ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрд╕рдбреАрдЖрд░ # рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реИред



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

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



рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдЯ рдореЗрдВ рд╣реИ, рдЬреЛ рдХрд┐ ON рдпрд╛ OFF рдмрдЯрди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдЬрдмрдХрд┐ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрд╡рд┐рдЪ рд╣рд╡рд╛ рдореЗрдВ рдЗрд╕ рдХреНрд░рдо рдХреЛ 20 рдмрд╛рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреА рдЧрддрд┐ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рд╕рд╕реНрддрд╛ рдФрд░ рдЖрд╕рд╛рди, рднрд▓реЗ рд╣реА рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдХреГрдд рд╣реЛ, рджреВрд╕рд░реЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдмреЗрд╢рдХ, рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд▓реЛрд░рд╛ рдпрд╛ рдлрд┐рд▓рд┐рдкреНрд╕ рд╣реНрдпреВ, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдПред рдЖрдк рд╕реНрд╡рдпрдВ рдРрд╕реЗ рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдбрд┐рдХреЛрдбрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рд╣реА "rtl_433" рдирд╛рдордХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд┐рдВрдбреЛрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд┐рдирдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ GitHub рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: "rtl_433.exe -F json"



рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдорд┐рд▓рд╛ рд╣реИ, рдпрд╣ рдЙрдирдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ


рдкрд╣рд▓реА рдмрд╛рдд рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╡рд╣ рд╣реИ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИред рд░рд╛рд╕реНрдкрд┐рдпрди рдкрд░ rtl_433 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

sudo apt-get install libtool libusb-1.0.0-dev librtlsdr-dev rtl-sdr build-essential autoconf cmake pkg-config cd rtl_433/ autoreconf --install ./configure make make install 

рджреВрд╕рд░рд╛ рдЪрд░рдг рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВред рдЕрдЬрдЧрд░ рдХреЛрдб рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ:

 from __future__ import print_function import os, sys, io import json import subprocess print("RTLSDR listening started") transmitter_name = "Waveman Switch Transmitter" transmitter_channel = 1 proc = subprocess.Popen(["rtl_433 -F json"], stdout=subprocess.PIPE, shell=True) while True: try: line = proc.stdout.readline().encode('ascii','ignore') proc.poll() data = json.loads(line) print(data) m,st,ch,btn= data['model'],data['state'],data['channel'],data['button'] if m==transmitter_name and ch==transmitter_channel and btn==1 and st=='on': print("ON") elif m==transmitter_name and ch==transmitter_channel and btn==1 and st=='off': print("OFF") except KeyboardInterrupt: break except: pass print("RTLSDR listening done") 

рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП rtl_listen.py) рдФрд░ рдХрдорд╛рдВрдб "python rtl_listen.py" рдЪрд▓рд╛рдПрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо subprocess.Popen рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИред рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдХреЛрдб рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИ, рдФрд░ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрдм "1" рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ ("рдЪрд╛рд▓реВ") рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдХреБрдЫ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GPIO рдкрд┐рди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ, рд░рд┐рд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬреЗрдВ, рдЖрджрд┐ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрд╕реЛрд▓ рдХреЗ рдореЙрдбрд▓ рдХреЗ рдирд╛рдо рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯрд░_рдирд╛рдоред

рд╡реИрд╕реЗ, рдЖрд░рдЯреАрдПрд▓-рдПрд╕рдбреАрдЖрд░ рд░рд┐рд╕реАрд╡рд░, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рд╡рд┐рдВрдбреЛрдЬ


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬ 10 рдХреЗ рддрд╣рдд, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЧрд┐рдердм рдкрд░ рдПрдХ рдЦреЛрдЬ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрдврд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдореИрдВ рдмрд╕ рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХреЛрдб рд▓рд╛рдКрдВрдЧрд╛ред

рд╕реНрд░реЛрдд рдХреЛрдб
 from __future__ import print_function import os, sys import subprocess import time import threading import Queue import json class AsynchronousFileReader(threading.Thread): # Helper class to implement asynchronous reading def __init__(self, fd, queue): assert isinstance(queue, Queue.Queue) assert callable(fd.readline) threading.Thread.__init__(self) self._fd = fd self._queue = queue def run(self): # The body of the tread: read lines and put them on the queue. for line in iter(self._fd.readline, ''): self._queue.put(line) def eof(self): # Check whether there is no more content to expect return not self.is_alive() and self._queue.empty() def replace(string): while ' ' in string: string = string.replace(' ', ' ') return string def read_rtl_data(): process = subprocess.Popen(["rtl_433.exe", "-F", "json"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) # Launch the asynchronous readers of stdout and stderr. stdout_queue = Queue.Queue() stdout_reader = AsynchronousFileReader(process.stdout, stdout_queue) stdout_reader.start() stderr_queue = Queue.Queue() stderr_reader = AsynchronousFileReader(process.stderr, stderr_queue) stderr_reader.start() transmitter_name = "Waveman Switch Transmitter" transmitter_channel = 1 # Check the queues if we received some output while not stdout_reader.eof() or not stderr_reader.eof(): # Show what we received from standard output. while not stdout_queue.empty(): line = stdout_queue.get() print("Line1:", repr(line)) data = json.loads(line) # print("Data:", repr(line)) m,st,ch,btn= data['model'],data['state'],data['channel'],data['button'] if m==transmitter_name and ch==transmitter_channel and btn==1 and st=='on': print("ON") elif m==transmitter_name and ch==transmitter_channel and btn==1 and st=='off': print("OFF") # Show what we received from standard error. while not stderr_queue.empty(): line = replace(stderr_queue.get()) print("Line2:", line) # Sleep a bit before asking the readers again. time.sleep(0.1) stdout_reader.join() stderr_reader.join() # Close subprocess' file descriptors. process.stdout.close() process.stderr.close() if __name__ == '__main__': print("RTLSDR listening started") read_rtl_data() print("RTLSDR listening done") 


рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рдо рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд░реНрдХ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИред

рдЙрджрд╛рд╣рд░рдг : рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реЛрдо рдерд┐рдПрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ, рдФрд░ рд╣рдо рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдкрд░ рдмрдЯрди рджрдмрд╛рдХрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреЛрдб 'рдкреНрд░рд┐рдВрдЯ ("рдмрдВрдж") рд╕реЗ рдмрджрд▓реЗрдВ

  os.system('shutdown -s') sys.exit(0) 

рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдЙрдкрдпреБрдХреНрдд рдмрдЯрди рджрдмрд╛рдХрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдмреЗрд╢рдХ, "рд╢рдЯрдбрд╛рдЙрди -s" рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдВрдбреЛрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдорд╛рдВрдб рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдРрд╕реЗ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмреЛрдирд╕ рдЬреЛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдкрдврд╝ рдЪреБрдХреЗ рд╣реИрдВред 433 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ рдЬреЛ rtl_433 рдХреЛ рдбрд┐рдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдмрд╕ рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдХреИрдЪ" рдХреНрдпрд╛ рд╣реИред рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд, рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЙрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдЬреЛ рдкрд╣рд▓реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓
2018-01-10 21:15:17 : Prologue sensor : 5 : 15
Channel: 1
Battery: OK
Button: 0
Temperature: 6.00 C
Humidity: 11 %

2018-01-10 21:15:28 : inFactory sensor
ID: 71
Temperature: 6.67 ┬░C
Humidity: 99 %

2018-01-10 21:16:07 : Toyota : TPMS : 61511475 : 60e5006b : CRC

2018-01-10 21:20:33 : Prologue sensor : 5 : 15
Channel: 1
Battery: OK
Button: 0
Temperature: 6.00 C
Humidity: 11 %
: Waveman Switch Transmitter
id: A
channel: 2
button: 1
state: on
: Waveman Switch Transmitter
id: A
channel: 2
button: 1
state: on
: Waveman Switch Transmitter
id: A
channel: 2
button: 1
state: on

2018-01-10 21:21:21 : Akhan 100F14 remote keyless entry
ID (20bit): 0x41
Data (4bit): 0x4 (Mute)
: Waveman Switch Transmitter
id: A
channel: 2
button: 1
state: off

2018-01-10 21:32:31 : Ford : TPMS : 00268b1f : a34a0e : CHECKSUM
2018-01-10 21:32:32 : Ford : TPMS : 00268a5c : 9c440e : CHECKSUM
2018-01-10 21:32:37 : Ford : TPMS : 016dbfce : 99430e : CHECKSUM
2018-01-10 21:32:39 : Ford : TPMS : 002671a0 : 9c4a0e : CHECKSUM


рджрд┐рд▓рдЪрд╕реНрдк рдбреЗрдЯрд╛ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрдбрд╝реЛрд╕реА рдХреА рдХрд╛рд░ рдХрд╛ рдЯрд╛рдпрд░ рджрдмрд╛рд╡ (рдЯреАрдкреАрдПрдордПрд╕, рдЯрд╛рдпрд░-рдкреНрд░реЗрд╢рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо), рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕реЗрдВрд╕рд░ рд╕реЗ рдмрд╛рд╣рд░реА рддрд╛рдкрдорд╛рди +6ред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рд╣рд░ рдХреЗ рддрд╛рдкрдорд╛рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдкрдбрд╝реЛрд╕реА рдЧрд▓рддреА рд╕реЗ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд░реВрдк рдореМрд╕рдо рд╕реНрдЯреЗрд╢рди рд╣реИред

рд╕рднреА рд╕рдлрд▓ рдкреНрд░рдпреЛрдЧред

рдЕрд╕реНрд╡реАрдХрд░рдг : рдЬрд╛рд╣рд┐рд░ рд╣реИ, OOK рдореЙрдбреБрд▓рди рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдбреАрдЖрд░ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЧреМрд░реИрдпрд╛ рдкрд░ рдмрдВрджреВрдХ рдХреА рдлрд╛рдпрд░рд┐рдВрдЧ рд╣реИред рд╢рд╛рдпрдж aliexpress рдкрд░ $ 1-2 рдХреЗ рд▓рд┐рдП рдСрдл-рдж-рд╢реЗрд▓реНрдл рд░рд┐рд╕реАрд╡рд░ рд╣реИрдВ рдЬреЛ рдХрдо рд▓рд╛рдЧрдд рдФрд░ рдХрдо рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдРрд╕реЗ рдореЙрдбрд▓ рдкрддрд╛ рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

Source: https://habr.com/ru/post/hi414285/


All Articles