
рдкреВрд░реНрдгрддрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдорд╛рдореВрд▓реА рдХреАрдбрд╝реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░ рддрдп рдХрд┐рдП рдЧрдП рдереЗред
рдЕрдм рдореИрдВ рдЖрдкрдХреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдмрд╛рдж рд╕реЗ рдкреВрд░реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
тЖТ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ
рдкрджрдирд╛рдо
bobaos
- bobaos
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП BAOS 83x рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UART рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рдЕрдиреНрдп рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
bdsd.sock
- KNX рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯреНрд╕ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рднреЗрдЬрдиреЗ / рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред DPT1 рд╕реЗ рд╕рд╣реА / рдЧрд▓рдд, DPT9 рд╕реЗ рдлреНрд▓реЛрдЯ рддрдХред рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдкрд░ рднреА рд╕реБрдирддрд╛ рд╣реИред
bobaos.pub
рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП redis
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
KNX /
- BAOS 83x рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕рдВрдЪрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдИрдЯреАрдПрд╕ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╕рдореВрд╣ рдкрддрд╛ (рдП) рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (рдпрд╛ рдирд╣реАрдВ)ред рд▓реЛрд╣реЗ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЕрдзрд┐рдХрддрдо рд░рд╛рд╢рд┐ 1000 рд╣реИред
рдХрд╛рд░реНрдп
рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИред рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИред KNX рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╛рдиреА рдЗрддрдирд╛ рд╣реИ рдХрд┐ рди рдХреЗрд╡рд▓ рдПрдХ bdsd.sock
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЙрдХреЗрдЯ рдХреЛ bdsd.sock
рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИред
рд╡рд┐рдЪрд╛рд░
рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рдЕрдкрдирд╛ рд╕рдВрджреЗрд╢ рдмреНрд░реЛрдХрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрдЯ рд╣реЛрдВрдЧреЗ, рд╡рд┐рд╖рдпреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВрдЧреЗ рдФрд░ рдЙрдирдореЗрдВ рд▓рд┐рдЦреЗ рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд / рднреЗрдЬреЗрдВрдЧреЗред рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдереЗ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЖрд▓рд╕реА рдиреЗ рдирд╣реАрдВ рд╕реБрдирд╛ рдерд╛, рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЦреБрдж рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЬреБрдиреВрдиреА рдерд╛ред
рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реЗрд╡рд╛ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЬреЛ рд╡рд┐рд╖рдп рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЬреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ - рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд▓реЙрдЧ рдПрдХ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ npm рдореЗрдВ bobos.pub рдкреИрдХреЗрдЬ рд▓рд┐рдЦрд╛ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ bdsd.sock рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдм рд╕реЙрдХреЗрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмреНрд░реЛрдХрд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдорд╕реНрдпрд╛
рдлрд┐рд░ рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдИ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд░рд╛рдд рднрд░ KNX рдмрд╕ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рд╕реБрдмрд╣ рдЙрдардХрд░, рдПрд▓ рдИ рдбреА рдХреЗ рдЪрдордХрдиреЗ рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ / рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рд╕реЗ, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рдерд╛ред рд╕рдВрджреЗрд╢ рд╕рдордп рдкрд░ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢ рдмреНрд░реЛрдХрд░ рдиреЗ рдЙрдкрд▓рдмреНрдз 512 рдПрдордмреА рд░реИрдо (рдмреАрдЧрд▓рдмреЛрд░реНрдб рдмреНрд▓реИрдХ рд╕реЗ) рд▓рдЧрднрдЧ рд╕рднреА рд▓реЗ рд▓рд┐рдпрд╛ред рдиреЛрдбрдЬ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ рд╕реНрдореГрддрд┐ js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрдордЬреЛрд░ рдмрд┐рдВрджреБ рд╣реИред
рдирд┐рд░реНрдгрдп
рдирддреАрдЬрддрди, рдЬреЗрдиреЗрд░рд┐рдХ рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯреНрд╕ рд╕реЗ рд░реЗрдбрд┐рд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ (рд╡реИрд╕реЗ, рд╡рд╣ рдпрд╣ рднреА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ)ред рд╢рд╛рдпрдж рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рд▓рд╛рдпрдХ рдерд╛, рд▓реАрдХ рдХреЛ рдвреВрдВрдврдирд╛, рд▓реЗрдХрд┐рди рдореИрдВ рддреЗрдЬреА рд╕реЗ рднрд╛рдЧрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
bobos рдХрд╛ рдЕрд░реНрде рд╣реИ FT1.2 рдореЗрдВ рд░реИрдкрд┐рдВрдЧ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде UART рд╕рдВрдЪрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрдЪрд╛рд░ рд╣реИред рдпрд╛рдиреА <..--..>
ред рдмреЛрдмреЛрд╕ рдореЙрдбреНрдпреВрд▓, рдЬреЛ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдмрджрд▓реЗ рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ UART рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рдЪрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рд╕реЗрд╡рд╛ рд░реЗрдбрд┐рд╕ рдкрдм / рдПрд╕рдпреВрдмреА рдЪреИрдирд▓ рдХреЛ рд╕реБрдирддреА рд╣реИ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ KNX рдХреЛ рднреЗрдЬрддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рдкрдВрдХреНрддрд┐ рдкрд░ рд▓реЛрдб js bobaos
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд░рд╣рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ JSON.parse()
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪреИрдирд▓ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдП рдЧрдП рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдореИрдВрдиреЗ redis
рд╢реАрд░реНрд╖ рдкрд░ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ рдХрд╛ redis
ред bee-queue
рдкрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
тЖТ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ
рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ bee-queue
рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ bobaos
рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ redis
рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ redis
рд╣реИ, рдмрджрд▓реЗ рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреБрдирд░реНрд▓реЗрдЦрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛ рдХреЛ redis
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ redis
рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ redis
ред рдПрдХрдорд╛рддреНрд░ рдЕрд╕реБрд╡рд┐рдзрд╛ рдЬреЛ рдореБрдЭреЗ рдЕрдиреБрднрд╡ рд╣реЛрддреА рд╣реИ рдХрд┐ рд╕рднреА рдЕрдиреБрд░реЛрдз рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░рдгреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реИред
рдорд╛рдореВрд▓реА рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдпрджрд┐ рдкрд╣рд▓реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рдереЗ getValue/getValues/readValue/readValues/setValue/setValues
, рдЕрдм getValue/readValue/setValues
рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдореВрд▓реНрдп рдФрд░ рдПрдХ рд╕рд░рдгреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ getValue([id1, id2, ...])
рд╡рд┐рдзрд┐ getValue([id1, id2, ...])
рдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ред рд▓реЗрдХрд┐рди рдХрдИ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рд╕реАрдорд╛рдПрдВ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЖрдХрд╛рд░ BufferSize
рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдзрд┐рдХрддрдо - 250 рдмрд╛рдЗрдЯреНрд╕; рдмреАрдПрдУрдПрд╕ 83x рдореЙрдбреНрдпреВрд▓ рдХреЗ рдореМрдЬреВрджрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИ - 1000ред
рдорд╛рдиреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдЬреНрдЮрд╛рдд рд╣реИ, рд╢реАрд░реНрд╖ рд▓реЗрдЦ рднреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ =)
- рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред рд╣рдо рдПрдХ
idUniq
рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред - рд╣рдо рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
i < idUniq.length
, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
a) рдЯреЗрдХ start: idUniq[i]
, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрди рдЕрдзрд┐рдХрддрдо рдорд╛рдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рднреА рд╡рд╕реНрддреБрдПрдБ DPT1 / DPT5 (1 рдмрд╛рдЗрдЯ) рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИрдВ, рддреЛ рд╣рдо 48 рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ: рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ #[1, 2, 3, 10, 20]
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ #[1, 2, 3, 10, 20]
, рдлрд┐рд░ рдЬрдм GetDatapointValue.Req(1, 30)
рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реВрдиреНрдп-рдмрд╛рдЗрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдЧреИрд░-рдореМрдЬреВрдж рдбреЗрдЯрд╛рдкреЙрдЗрдВрдЯ [4, 5, 6, ..., 30]
рд▓рд┐рдП рднреА рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреАред
рдмреА) рдорддрдЧрдгрдирд╛ рдПрдХ рдирдП рдЪрдХреНрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИ j < i + max
(рдЬрд╣рд╛рдВ max
50 рд╣реИ, рдпрд╛, рдпрджрд┐ 1000 рдХреЗ рдХрд░реАрдм рд╣реИ, рддреЛ рдЕрдзрд┐рдХрддрдо 1000 - id + 1
, 990 рдХреЗ рд▓рд┐рдП рдпрд╣ 11 рдХреЗ рд▓рд┐рдП, 999 - 2 рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛), рдЕрдЧрд░ рдЧрд┐рдирддреА рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ рдореВрд▓ рдХреНрд╡реЗрд░реА рд╕реЗ рдПрд░реЗ рдХреЗ рддрддреНрд╡, рдлрд┐рд░ рдЗрдВрдбреЗрдХреНрд╕ i
рд╡реЗрд░рд┐рдПрдмрд▓ i
рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред
рдЧ) рдпрджрд┐ рдЪрдХреНрд░ j
рдЧрдгрдирд╛ j
рдЧрдИ рд▓рдВрдмрд╛рдИ рдЕрдзрд┐рдХрддрдо рдмрдлрд░ рд▓рдВрдмрд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рдХреНрд╡реЗрд░реА рдХрд╛рд░реНрдб рддрддреНрд╡ {start: start, number: number}
рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕рд░рдгреА рдореЗрдВ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЪрд░ i
рдмрдврд╝рд╛рддреЗ рд╣реИрдВ (рдпрд╛ рд╕рд░рдгреА рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ idUniq
рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ), рдмреАрдЪ рдореЗрдВ рдЪрдХреНрд░ j
, рджреЛрдиреЛрдВ рдЪрдХреНрд░ рдкреБрдирдГ рдЖрд░рдВрдн рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо bobaos
рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз bobaos
ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ getValue([1, 2, 3, 40, 48, 49, 50, 100, 998, 999, 1000])
рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ getValue([1, 2, 3, 40, 48, 49, 50, 100, 998, 999, 1000])
, рддреЛ рдЕрдиреБрд░реЛрдз рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
{start: 1, number: 48}, // 1, 2, 3, 40, 48 {start: 49, number: 48}, // 49, 50 {start: 100, number: 48}, // 100 {start: 998, number: 3} // 998, 999, 1000
рдпрд╣ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
{start: 1, number: 48}, // 1, 2, 3, 40, 48 {start: 49, number: 2}, // 49, 50 {start: 100, number: 1}, // 100 {start: 998, number: 3} // 998, 999, 1000
рдЙрддрдиреЗ рд╣реА рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ, рдХрдо рдбреЗрдЯрд╛ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд░реЛрдХ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЛ redis
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрд░рдорд╢рдГ, рдЙрдиреНрд╣реЗрдВ getStoredValue
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ getStoredValue
рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред
ping/get sdk state/reset
рд╕реЗрд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрддрд╛рд░ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдкреЛрд░реНрдЯ рдкрд░ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реИ (рдлреНрд░реЗрдо рдХрд╛рдЙрдВрдЯрд░ рднрдЯрдХ рдЧрдпрд╛, рдЖрджрд┐) рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреБрдЫ рдХрд╛рд░реНрдп рдкрд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рджреВрд╕рд░реА рдХрддрд╛рд░ рдореЗрдВ reset
рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рддрджрдиреБрд╕рд╛рд░, sdk
рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред
рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ - bobaos.sub
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ KNX bobaos.sub
рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, bobaos.sub
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
const BobaosSub = require("bobaos.sub"); // : // redis: url // request_channel: "bobaos_req" , // service_channel: "bobaos_service" , // broadcast_channel: "bobaos_bcast" let my = BobaosSub(); my.on("connect", _ => { console.log("connected to ipc, still not subscribed to channels"); }); my.on("ready", async _ => { try { console.log("hello, friend"); console.log("ping:", await my.ping()); console.log("get sdk state:", await my.getSdkState()); console.log("get value:", await my.getValue([1, 107, 106])); console.log("get stored value:", await my.getValue([1, 107, 106])); console.log("get server item:", await my.getServerItem([1, 2, 3])); console.log("set value:", await my.setValue({id: 103, value: 0})); console.log("read value:", await my.readValue([1, 103, 104, 105])); console.log("get programming mode:", await my.getProgrammingMode()); console.log("set programming mode:", await my.setProgrammingMode(true)); console.log("get parameter byte", await my.getParameterByte([1, 2, 3, 4])); console.log("reset", await my.reset()); } catch(e) { console.log("err", e.message); } }); my.on("datapoint value", payload => { // , payload , // Array.isArray(payload) console.log("broadcasted datapoint value: ", payload); }); my.on("server item", payload => { // , payload , // Array.isArray(payload) console.log("broadcasted server item: ", payload); }); my.on("sdk state", payload => { console.log("broadcasted sdk state: ", payload); });
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛:
тЖТ NodeJS рдкрд░ CLI рд▓рд┐рдЦрдирд╛
рдЯреАрдореЗрдВ рдЫреЛрдЯреА, рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реЛ рдЧрдИ рд╣реИрдВред
bobaos> progmode ? BAOS module in programming mode: false bobaos> progmode 1 BAOS module in programming mode: true bobaos> progmode false BAOS module in programming mode: false bobaos> description 1 2 3 #1: length = 2, dpt = dpt9, prio: low, flags: [C-WTU] #2: length = 1, dpt = dpt1, prio: low, flags: [C-WT-] #3: length = 1, dpt = dpt1, prio: low, flags: [C-WT-] bobaos> set 2: 0 20:27:06:239, id: 2, value: false, raw: [AA==] bobaos> set [2: 0, 3: false] 20:28:48:586, id: 2, value: false, raw: [AA==] 20:28:48:592, id: 3, value: false, raw: [AA==]
рдЕрдВрддрднрд╛рд╖рдг
рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдереАред рдПрдХ рдмреИрдХреЗрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢рдВрдХреБ рдкреИрдХ рдХрд┐рдП рдЧрдП рдереЗред рд▓реЗрдХрд┐рди рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдРрд╕реА рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдпрд╣ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ nodejs
рдХрд┐ nodejs
рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реИрдо (20 рдПрдордмреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ) рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреА рд╣реИрдВ рдФрд░ рд▓реАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрдврд╝рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рд╕рднреА рд╕реНрдерд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд░рдЦреЗрдВред
рдкреНрд░рд▓реЗрдЦрди рдЕрджреНрдпрддрди рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ redis
рдФрд░ bee-queue
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ bee-queue
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдХреНрд╕реЗрд╕рд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдИред
UPD: boboskit - рдПрдХреНрд╕реЗрд╕рд░реАрдЬ, dnssd рдФрд░ WebSocket
рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЦреБрд╢реА рд╣реЛрдЧреАред