рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрдВрдХрдбрд╝, рд╕реНрдерд┐рд░ рдиреВрд▓рд╛рдЗрдЯ рдФрд░ рд╕рд╕реНрддреА esp8266 рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рди

рдЪреВрдБрдХрд┐ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ ( рд▓рд┐рдВрдХ рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЗрд╕ рд╕рд╛рд▓, рдореИрдВрдиреЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛, рдЗрдВрдЯрд░рдиреЗрдЯ рдФрд░ рдЗрд╕рдиреЗ IoT :) тЖТ рдЗрдВрдЯрд░рдиреЗрдЯ рдСрдл рдерд┐рдВрдЧреНрд╕ рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред

рдореИрдВ рд╕рдВрдЪрд┐рдд рдЬреНрдЮрд╛рди рдХреЗ рдПрдХ рдирдП рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдХрд╣рд╛рдВ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ тЖТ рдореИрдВ рдЖрдкрд╕реЗ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред

рдиреВрд▓рд┐рдЯ рдПрдл v2.0


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

рдПрдирд▓рд╛рдЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкрд╣рд▓реА рдкреАрдврд╝реА рдХреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдирдП рд╣реИрдВ: рдПрдХ рдмрд┐рдЬрд▓реА рдЗрдХрд╛рдИ SLF-1-200 (nooLite-F) рдлреАрдбрдмреИрдХ ( рдФрд░ рдирдИ рдкреАрдврд╝реА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди ) рдХреЗ рд╕рд╛рдеред

рдЫрд╡рд┐

рдкрд╛рд╡рд░ рдмреНрд▓реЙрдХ SB-1-150

рдЫрд╡рд┐

рдФрд░ рдЕрдкрдбреЗрдЯреЗрдб USB рдПрдбреЙрдкреНрдЯрд░ MTRF-64 USBред

рдЫрд╡рд┐

рдореЗрд░реЗ рдШрд░ рдореЗрдВ рд╕рд╛рд░реА рд░реЛрд╢рдиреА рдиреВрд▓реА рд╕рд┐рд╕реНрдЯрдо рдкрд░ред

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ, рдореЗрд░реЗ рдкрд╛рд╕ "рд╕рд┐рд╕реНрдЯрдо рд╣реЛрдо рдХреНрд░реИрдореНрдк" рдореЗрдВ 16 рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЕрдм 64 рдЪреИрдирд▓ (MTRF-64 USB) рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдкреАрдврд╝реА рдХрд╛ USB рдЕрдбреИрдкреНрдЯрд░ рдерд╛, рдФрд░ рдлреАрдбрдмреИрдХ рд╡рд╛рд▓реА рдирдИ рдкреАрдврд╝реА рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА (noolite F)ред рд▓реЗрдХрд┐рди рддрдХрдиреАрдХ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдирдП, рдЖрдзреБрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реА рд╣реИред

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

рдирдИ рдкреАрдврд╝реА рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдирд┐рд░реНрдорд╛рддрд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

рдЕрдЬрдЧрд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
# -*- coding: utf-8 -*- #!/usr/bin/env python import serial import time class NooLiteCommand: def __init__(self, ch, cmd, mode=0, ctr=0, res=0, fmt=0, d0=0, d1=0, d2=0, d3=0, id0=0, id1=0, id2=0, id3=0): self.st = 171 self.mode = mode self.ctr = ctr self.res = res self.ch = ch self.cmd = cmd self.fmt = fmt self.d0 = d0 self.d1 = d1 self.d2 = d2 self.d3 = d3 self.id0 = id0 self.id1 = id1 self.id2 = id2 self.id3 = id3 self.sp = 172 @property def crc(self): crc = sum([ self.st, self.mode, self.ctr, self.res, self.ch, self.cmd, self.fmt, self.d0, self.d1, self.d2, self.d3, self.id0, self.id1, self.id2, self.id3, ]) return crc if crc < 256 else divmod(crc, 256)[1] def to_bytes(self): return bytearray([ self.st, self.mode, self.ctr, self.res, self.ch, self.cmd, self.fmt, self.d0, self.d1, self.d2, self.d3, self.id0, self.id1, self.id2, self.id3, self.crc, self.sp ]) class NooliteSerial: def __init__(self, tty_name): self.tty = self._get_tty(tty_name) def on(self, ch): self.send_command(ch, 2, 2, 0) pass def off(self, ch): self.send_command(ch, 0, 2, 0) pass def status(self, ch): m = self.send_command(ch, 128, 2, 0) pass def send_command(self, ch, cmd, mode=0, ctr=0, res=0, fmt=0, d0=0, d1=0, d2=0, d3=0, id0=0, id1=0, id2=0, id3=0): command = NooLiteCommand(ch, cmd, mode, ctr, res, fmt, d0, d1, d2, d3, id0, id1, id2, id3) self.tty.write(command.to_bytes()) while True: bytes_response = list(self.tty.read(117)) if bytes_response: all_responses.append(bytes_response) if bytes_response[3] == 0: break else: break return all_responses @staticmethod def _get_tty(tty_name): serial_port = serial.Serial(tty_name, timeout=0.1) if not serial_port.is_open: serial_port.open() serial_port.flushInput() serial_port.flushOutput() return serial_port noo_serial = NooliteSerial('/dev/ttyUSB0') #ch, cmd, mode, ctr #noo_serial.send_command(1, 15, 2, 0) #    1 #noo_serial.send_command(0, 4, 2, 0) #switch #noo_serial.send_command(0, 2, 2, 0) #turn on #noo_serial.send_command(0, 3, 2, 0) #   #noo_serial.send_command(0, 0, 2, 0) #turn off #noo_serial.send_command(0, 15, 2, 0) #  #noo_serial.send_command(0, 128, 2, 0,0,1) #CMD_Read_State + fmt = 1 #noo_serial.on(0) #noo_serial.status(0) #noo_serial.off(0) #noo_serial.off(0) #noo_serial.status(0) #noo_serial.send_command(ch=0,ctr=8, cmd=4, id0=0,id1=0,id2=48,id3=114) #switch noolite ID 0.0.48.114 


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

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ рдШрд░ рдореЗрдВ рдПрдХ рднреА рдкреБрд╢ рдмрдЯрди рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдерд╛ред рдореБрдЭреЗ рдЧреИрд░рд╛рдЬ рдореЗрдВ рд░реЛрд╢рдиреА рдбрд╛рд▓рдиреА рдереА (рдореБрдЭреЗ рдмрд╕ рд╡рд╣рд╛рдВ рд╕рд╛рдорд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛: рдбреА), рдФрд░ рдореЗрдХрдЕрдк рджрд░реНрдкрдг рдХреА рдмреИрдХрд▓рд╛рдЗрдЯ рдореЗрдВ рдПрдХ рд╕реНрд╡рд┐рдЪ рднреА рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдПрд╕рдмреА-1-150 рдкрд╛рд╡рд░ рдпреВрдирд┐рдЯ рд╣реИ , рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд╡рд┐рдЪ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдпреВрдирд┐рдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ред рджрд░реНрдкрдг рдХрд╛ рдмреИрдХрд▓рд╛рдЗрдЯ рдПрдХ рд╕рдлреЗрдж рдкреНрд▓реЗрдЯ, 3w рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм 4000 K, рд╕рдлреЗрдж рдкреНрд░рдХрд╛рд╢ рд╕реЗ рдмрдирд╛ рдерд╛ред SB-1-150 рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рджреАрд╡рд╛рд░ рд╕реНрд╡рд┐рдЪ (рд╕реНрд╡рд┐рдЪ) рдХреЗ рдмреЙрдХреНрд╕ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрдХрд╛рдИ рдХреЛ рдПрдХ рдкреБрд╢-рдмрдЯрди рд╕реНрд╡рд┐рдЪ рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд▓рдбрд╝рдХрд┐рдпреЛрдВ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :)
рдЫрд╡рд┐

рдХрдВрдХрдбрд╝


рдЬрдм рдореИрдВрдиреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореБрдЦреНрдп рдХрд╛рд░рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛: рд╕рдХреНрд╖рдо рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдмрдВрдзрдиред

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

рдЫрд╡рд┐

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

рдХрдВрдХрдбрд╝ рдЬрд╝рд┐рдВрджрд╛ рд╣реИ!

Pebble.com рдХрдВрдкрдиреА (Fitbit рдиреЗ рд╕рднреА pebble.com рдХреЛ рдкреЗрдЯреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЦрд░реАрджрд╛) рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рддреНрд░рд╛рд╕рджреА рдиреЗ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЖрдИрдУрдПрд╕, рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рдПрдХ рдЕрдкрдбреЗрдЯ рдерд╛ - рдШрдбрд╝реА рдХрдВрдХрдбрд╝ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ (рд╕рдорд░реНрдерди рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдереАред

рдиреЗрддреНрд░рд╣реАрди - рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрд╡рд╛ рдмрдиреА рд╣реБрдИ рд╣реИ : Cloudpebble.net - WTF? рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИред рдпрджрд┐ рдЖрдк рдЬреЗрдПрд╕ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рд╕реА ++ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ) - рдХреГрдкрдпрд╛ рдмреЛрд░реНрдб рдкрд░ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВ :) - рдмрд╛рджрд▓ рдХрдВрдХрдбрд╝ рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ "рдлреЗрдВрдХ" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ред рдмреЗрд╢рдХ, рдЬреЗрдПрд╕ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ C ++ (рдпрд╣ рдкрд╡рд┐рддреНрд░ рд╣реИ) рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдиреАрдЪреЗ рдЭреБрдХрд╛ рд╣реБрдЖ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рдБ!

рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдХрдбрд╝ рдмрд╛рджрд▓ рдЬреЗрдПрд╕ рдХреЛрдб
 var UI = require('ui'); var ajax = require('ajax'); var noolite = [ ['','http://your-home-server-ip-address:1183/mqtt/gate/slidegate', 'images/gate.png'], ['','http://your-home-server-ip-address:1183/mqtt/gate/garage', 'images/door.png'], ['!','http://your-home-server-ip-address:1183/noolite/switch/103', 'images/light.png'], [' ','http://your-home-server-ip-address:1183/noolite/switch/100', 'images/system2.png'], ['1  ','', 'images/light.png'], ['2  ','', 'images/light.png'], [' 1','http://your-home-server-ip-address:1183/noolite/switch/101', 'images/light.png'], [' 2','http://your-home-server-ip-address:1183/noolite/switch/102', 'images/light.png'], ['','', 'images/water.png'], ['','http://your-home-server-ip-address:1183/admin/system/1', 'images/system1.png'], ]; var water = [ [' ','http://your-home-server-ip-address:1183/admin/poliv/1', 'images/water.png'], [' ','http://your-home-server-ip-address:1183/admin/poliv/2', 'images/water.png'], [' 1 ','http://your-home-server-ip-address:1183/noolite/switch/20', 'images/water.png'], [' 2 ','http://your-home-server-ip-address:1183/noolite/switch/21', 'images/water.png'], [' 3 ','http://your-home-server-ip-address:1183/noolite/switch/22', 'images/water.png'], [' 4 ','http://your-home-server-ip-address:1183/noolite/switch/23', 'images/water.png'], [' 5 ','http://your-home-server-ip-address:1183/admin/poliv/switch/5', 'images/water.png'], [' 6 ','http://your-home-server-ip-address:1183/admin/poliv/switch/6', 'images/water.png'], [' 7 ','http://your-home-server-ip-address:1183/admin/poliv/switch/7', 'images/water.png'], [' 8 ','http://your-home-server-ip-address:1183/admin/poliv/switch/8', 'images/water.png'], [' 9 ','http://your-home-server-ip-address:1183/admin/poliv/switch/9', 'images/water.png'], ]; var light1 = [ [' ','http://your-home-server-ip-address:1183/noolite/switch/6', 'images/light.png'], [' ','http://your-home-server-ip-address:1183/noolite/switch/0', 'images/light.png'], ['  ','http://your-home-server-ip-address:1183/noolite/switch/1', 'images/light.png'], ['  ','http://your-home-server-ip-address:1183/noolite/switch/7', 'images/light.png'], ['  ','http://your-home-server-ip-address:1183/noolite/switch/8', 'images/light.png'], [' 1 ','http://your-home-server-ip-address:1183/noolite/switch/2', 'images/light.png'], [' 1 ','http://your-home-server-ip-address:1183/noolite/switch/3', 'images/light.png'], [' 1 ','http://your-home-server-ip-address:1183/noolite/switch/4', 'images/light.png'], [' ','http://your-home-server-ip-address:1183/noolite/switch/5', 'images/light.png'], [' ','http://your-home-server-ip-address:1183/noolite/switch/9', 'images/light.png'], ]; var light2 = [ [' ','http://your-home-server-ip-address:1183/noolite/switch/15', 'images/light.png'], [' ','http://your-home-server-ip-address:1183/noolite/switch/16', 'images/light.png'], [' 2 ','http://your-home-server-ip-address:1183/noolite/switch/10', 'images/light.png'], [' 2 ','http://your-home-server-ip-address:1183/noolite/switch/11', 'images/light.png'], [' 2 ','http://your-home-server-ip-address:1183/noolite/switch/12', 'images/light.png'], [' ','http://your-home-server-ip-address:1183/noolite/switch/13', 'images/light.png'], ['  ','http://your-home-server-ip-address:1183/noolite/switch/14', 'images/light.png'], ]; var menu = new UI.Menu({ sections: [{ items: [{ title: '', subtitle: '' }] }] }); var menu1 = new UI.Menu({ sections: [{ items: [{ title: '', subtitle: '' }] }] }); var menu2 = new UI.Menu({ sections: [{ items: [{ title: '', subtitle: '' }] }] }); var menu3 = new UI.Menu({ sections: [{ items: [{ title: '', subtitle: '' }] }] }); var items = []; for (var i=0; i<noolite.length; i++) { items[i] = { title: noolite[i][0], subtitle: '', icon: noolite[i][2] }; } var items1 = []; for (var i=0; i<light1.length; i++) { items1[i] = { title: light1[i][0], subtitle: '', icon: light1[i][2] }; } var items2 = []; for (var i=0; i<light2.length; i++) { items2[i] = { title: light2[i][0], subtitle: '', icon: light2[i][2] }; } var items3 = []; for (var i=0; i<water.length; i++) { items3[i] = { title: water[i][0], subtitle: '', icon: water[i][2] }; } menu.items(0, items); menu1.items(0, items1); menu2.items(0, items2); menu3.items(0, items3); menu.show(); menu.on('select', function(e) { if (e.itemIndex == 4) { menu1.show(); } else if (e.itemIndex == 5) { menu2.show(); } else if (e.itemIndex ==8) { menu3.show(); } else { var url = noolite[e.itemIndex][1]; console.log(url); ajax({ url: url, method: 'get' }, function(data) { console.log('switched OK'); }, function(error) { // Failure! console.log('error'); } ); } }); menu1.on('select', function(e) { var url = light1[e.itemIndex][1]; console.log(url); ajax({ url: url, method: 'get' }, function(data) { console.log('switched OK'); }, function(error) { // Failure! console.log('error'); } ); }); menu2.on('select', function(e) { var url = light2[e.itemIndex][1]; console.log(url); ajax({ url: url, method: 'get' }, function(data) { console.log('switched OK'); }, function(error) { // Failure! console.log('error'); } ); }); menu3.on('select', function(e) { var url = water[e.itemIndex][1]; ajax({ url: url, method: 'get' }, function(data) { console.log('switched OK'); }, function(error) { // Failure! console.log('error'); } ); }); 


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

рдпрд╣ рдПрдХ рджрдпрд╛ рд╣реИ ... рдпрд╣ рдПрдХ рджрдпрд╛ рд╣реИ рдХрд┐ рдХрдВрдХрдбрд╝ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдХрдВрдХрдбрд╝ рд╕рдордп рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рджрд┐рд▓ рдореЗрдВ рд░рд╣реЗрдЧрд╛!

MQTT


рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓, рдореБрдЭреЗ MQTT (рдЗрддрд┐рд╣рд╛рд╕: рдЗрддрд┐рд╣рд╛рд╕: рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдбреЙред рдПрдВрдбреА рд╕реНрдЯреИрдирдлреЛрд░реНрдб-рдХреНрд▓рд╛рд░реНрдХ (рдЖрдИрдмреАрдПрдо) рдФрд░ рдЕрд░реНрд▓реЗрди рдиреЗрдкрд░ (Arcom) рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ 1999 рдореЗрдВ рдПрдХ рд░реЙрдпрд▓реНрдЯреА-рдлреНрд░реА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред MQTT 3.1.1 рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдерд╛ред 2014 рдореЗрдВ OASIS рд╕рдВрдШ рджреНрд╡рд╛рд░рд╛ рдорд╛рдирдХреАрдХреГрддред рд▓рд┐рдВрдХ )ред

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ ... рдФрд░ рдореИрдВ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ред

рдпрд╣ рд╕рдордЭрддреЗ рд╣реБрдП рдХрд┐ рдПрдХ рдЕрдЪреНрдЫреЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрдореА IoT рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ (рдЫреЗрдж) рд╣реИ (рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдмрд╣реБрдд рдХрдо рдХрд░рддреЗ рд╣реИрдВ ....) - рдореИрдВрдиреЗ рдФрд░ рдореЗрд░реА рдЯреАрдо рдиреЗ рдХрд╛рдо рдкрд░, рдПрдВрдбреНрд░реЙрдЗрдб, рдЖрдИрдУрдПрд╕, рдбрдмреНрд▓реНрдпреВрдкреА рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗ рдФрд░ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реЛред рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рд╣рдордиреЗ рдХреИрд╕реЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ ESP8266 + MTRF64 (Noolite) рдмрдирд╛рдпрд╛ рдФрд░ Nodemcu рдлрд░реНрдорд╡реЗрдпрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред рдпрд╣ рд╢рд╛рдирджрд╛рд░, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рд╕рд╕реНрддрд╛ рдФрд░ рд╕реБрдВрджрд░ рд╣реЛрдЧрд╛! рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдорд╛рдЪрд╛рд░ рдХрд╛ рдкрд╛рд▓рди тАЛтАЛрдХрд░реЗрдВ рдпрд╣рд╛рдВ ред

рдЫрд╡рд┐

рдЕрдм рдЖрдк $ 50-100 рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдШрд░реЗрд▓реВ рд╕рд░реНрд╡рд░ рдФрд░ рдпреВрдПрд╕рдмреА рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдиреВрд▓реА рд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рдШрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ:

рд╡реАрдбрд┐рдпреЛ рдирд┐рдЧрд░рд╛рдиреА: xeoma рд╡реАрдбрд┐рдпреЛ рдирд┐рдЧрд░рд╛рдиреА [рдЖрдИрдкреА рдХреИрдорд░рд╛]
рд╕рд┐рд╕реНрдЯрдо рдпреВрдирд┐рдЯ рдкрд░ рд╕рд░реНрд╡рд░: nginx + gunicorn + python + mqtt рдмреНрд░реЛрдХрд░
рдкреНрд░рдмрдВрдзрди: рдХрдВрдХрдбрд╝ рдШрдбрд╝реА + MQTT рдЧреНрд░рд╛рд╣рдХ
рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбреНрдпреВрд▓ (рд╕рд┐рд╕реНрдЯрдо рдиреЛрдбреНрд╕): ESP8266 + рдСрдкреНрдЯреЛрдХреЙрдкрд░реНрд╕ \ ds18b20, dht11 рд╕реЗрдВрд╕рд░]

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВрдиреЗ рдПрдордХреНрдпреВрдЯреАрдЯреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рджреЗрдЦреАрдВ, рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЕрдВрдд IoT рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рддреНрд╡рд░рд┐рдд рд╕рдВрдЪрд╛рд░, рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ рдХрд┐ MQTT рд╕рдВрджреЗрд╢ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ "рдЕрдЧреНрд░реЗрд╖рдг" рдХреЗ рдмрд┐рдирд╛ рд░рд╛рдЙрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреИрдореНрдмреЛрд░рд┐рди рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ! рдордЬрд╛ рдЖ рдЧрдпрд╛! рджрд┐рд▓ рд╕реЗ :)

рдпрд╣ рд╕рдм рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдПрдХ "рд╣реЛрдо рдХреЛрдЪрд╡рдЬрди" рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдХрдИ рддрдерд╛рдХрдерд┐рдд рдиреЛрдбреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ рд╣реИрдВ): mtttt.ximxim.com (рд╕рд╛рдЗрдЯ рдкрд░ рд▓реЙрдЧрд┐рди рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ )) - рдЪреВрдВрдХрд┐ esp8266 рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, MQTT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдИрдлрд╝рд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ MQTT рдмрдбреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдореИрдВрдиреЗ рдХрд┐рд╕реА рднреА рд╣реЛрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛, рдореИрдВ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЙрдб рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдмрдирд╛рдКрдВрдЧрд╛ рдФрд░ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ IoT рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛! рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд░реНрдореЛрдВ рддрдХ!

ESP8266


рдЬрдм рдореИрдВ рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдмреЛрд░реНрдб рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдЖ, рддреЛ рдореИрдВ рддреБрд░рдВрдд рдЗрд╕ рддрдереНрдп рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖ рдХрд┐ рдмреЛрд░реНрдб рдЫреЛрдЯрд╛ рд╣реИ, рдиреЛрдбреЗрдорд╕реНрдХреБ рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рдПрд▓рдпреВрдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдХреНрдпрд╛ рдЖрдк + MQTT рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд░реВрд░рдд рд╣реИ рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ, рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рдиреАрдВрд╡ рд╣реИрдВред рд╢реБрд▓реНрдХ рдХреЗ рд▓рд┐рдП $ 2 рд╕реЗ $ 5 рддрдХ рдХреА рд▓рд╛рдЧрдд (рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдпреВрдПрд╕рдмреА рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд 5 рд╡реЗрдВ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП) рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╡рд╛рдИрдлрд╛рдИ рдХрдиреЗрдХреНрд╢рди рддреЗрдЬ рд╣реИ, рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЧреЗрдЯ / рдЧреЗрд░рд╛рдЬ / рдкрд╛рдиреА \ рдкреНрд░рдХрд╛рд╢ рдирд┐рдпрдВрддреНрд░рдгред рдореЗрд░реЗ рдкрд╛рд╕ 30% рд▓реЙрди рд╕рд┐рдВрдЪрд╛рдИ рд╣реИ рдЬреЛ Niteite рд╕рд┐рд╕реНрдЯрдо (рдбреНрд░рд╛рдИ рдХреЙрдиреНрдЯреИрдХреНрдЯ рдмреНрд▓реЙрдХреНрд╕) рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реИ, рд╢реЗрд╖ 70% esp8266 рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдмреЛрд░реНрдб рдХреЛ MQTT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ LUA рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Esp8266 рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ LUA рдХреЛрдб, рдЖрдИрдкреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ MQTT рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛
 --load credentials dofile("credentials.lua") function init(name, pass) wifi.setmode(wifi.STATION) wifi.sta.config(name, pass) wifi.sta.connect() tmr.alarm(0, 1000, 1, function() if wifi.sta.getip()== nil then print("IP unavaiable, Waiting...") else tmr.stop(0) print("Config done, IP is "..wifi.sta.getip()) print("mac : "..wifi.sta.getmac()) dofile("mqtt.lua") end end) end print("START!") init(SSID,PASSWORD) 


- mqtt.lua рдлрд╝рд╛рдЗрд▓

 local door = 7 -- gpio13 local window = 6 -- gpio12 local cooler = 5 --gpio14 local led = 4 --GPIO2 board led! LOW == turn ON local light1 = 8 --gpio 15 local light2 = 1 --gpio 5 local light3 = 2 -- gpio 4 function register_myself() m:subscribe("mqtt_buddy/#",0,function(conn) print ("subscribed to Xim mqtt.ximxim.com server") end) end m = mqtt.Client("MQTT_BUDDY_SHOW_ROOM", 120, MQTT_USER, MQTT_PASS) m:on("connect", function(client) print ("connected to Xim mqtt.ximxim.com server") end) m:on("offline", function(client) reconnect_mqtt() end) m:on("message", function(client, topic, data) --print(topic.." data:"..data) if topic == "mqtt_buddy/window" and data == "1" then print "open-close window..." gpio.write(window, gpio.HIGH) gpio.write(led, gpio.LOW) tmr.alarm(1, 1000, tmr.ALARM_SINGLE, function() gpio.write(window, gpio.LOW) gpio.write(led, gpio.HIGH) print "command to close\open window is sent!" end) elseif topic == "mqtt_buddy/door" and data == "1" then print "open-close door..." gpio.write(door, gpio.HIGH) gpio.write(led, gpio.LOW) tmr.alarm(2, 1000, tmr.ALARM_SINGLE, function() gpio.write(door, gpio.LOW) gpio.write(led, gpio.HIGH) print "command to close\open door is sent!" end) elseif topic == "mqtt_buddy/cooler" then if data == "1" then print "switch on fan..." gpio.write(cooler, gpio.HIGH) gpio.write(led, gpio.LOW) else print "switch off fan..." gpio.write(cooler, gpio.LOW) gpio.write(led, gpio.HIGH) end elseif topic == "mqtt_buddy/light1" then if data == "1" then print "switch light1 ON..." gpio.write(light1, gpio.HIGH) gpio.write(led, gpio.LOW) else print "switch light1 off..." gpio.write(light1, gpio.LOW) gpio.write(led, gpio.HIGH) end elseif topic == "mqtt_buddy/light2" then if data == "1" then print "switch light2 ON..." gpio.write(light2, gpio.HIGH) gpio.write(led, gpio.LOW) else print "switch light2 off..." gpio.write(light2, gpio.LOW) gpio.write(led, gpio.HIGH) end elseif topic == "mqtt_buddy/light3" then if data == "1" then print "switch light3 ON..." gpio.write(light3, gpio.HIGH) gpio.write(led, gpio.LOW) else print "switch light3 off..." gpio.write(light3, gpio.LOW) gpio.write(led, gpio.HIGH) end end end) m:connect(MQTT_SERVER, MQTT_SERVER_PORT, 0, function(conn) register_myself() end) 


рд╕рдорд╕реНрдпрд╛


рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕рдореБрджрд╛рдп рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реБрдП, рдореИрдВ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╖рдп рдкрд░, рдпрд╛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫреВрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдЧрд╣рди рд╢реЛрдз / рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рд╣реИред

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

рдХреИрдорд░реЗ рд╕реЗ рд╕реНрд░реЛрдд рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ (рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рднреА рд╣реИ, рдХреИрдорд░реЗ рд╕реЗ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреИрдорд░реЗ рдореЗрдВ URL рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдЗрд╕ URL рдХреЛ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдиреЗрдВрдЧреЗ ....) рдФрд░ рдЖрдЧреЗ MQTT рдЪреИрдирд▓ рдкрд░ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рдЬреЛ рдХрд┐ рд╣реИ) рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдо рдореЗрдВ mqtt рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рд╢рд╛рдпрдж рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ = ESP8266 + рдЖрдИрдкреА рд╡реЗрдм рдХреИрдо?
рдХреГрдкрдпрд╛ рдЬрд╡рд╛рдм рджреЗрдВ (bogdanovich.alex [@] gmail.com)ред рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛!

рдкреНрд░реЛрдмреНрд░реЛрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рд╣реЛрдо рд╕рд░реНрд╡рд░ рдкреНрд░рд╢реНрди рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдмрд┐рдЬрд▓реА рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реА рднрдЯреНрдЯреА рдЧрд░реНрдо рдХрд░рддрд╛ рд╣реИ :)

рдЫрд╡рд┐

рд╕рднреА рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рджрд┐рди рдФрд░ рдЕрдЪреНрдЫреЗ рдореВрдб!

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


All Articles