рд╣реЛрдо рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрдкрдХрд░рдг рдХреА рдЦреЛрдЬ рдХреА рд╣реИ рдЬреЛ HA рдХреЗ рд╕рд╛рде рдШрдирд┐рд╖реНрда рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рд╣реИ рдФрд░ рдкрд╣рд▓реЗ Habr├й - ESP рд╣реЛрдо (рдкреВрд░реНрд╡ рдореЗрдВ ESPhomeYAML) рдкрд░ рдЬрд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред
рдИрдПрд╕рдкреА рд╣реЛрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдИрдПрд╕рдкреА 8266 рдФрд░ рдИрдПрд╕рдкреА 32 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рд╕реЗ рдпрдорд▓ рдПрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЫреЛрдЯреЗ рдФрд░ рдордзреНрдпрдо рд╕реНрддрд░ рдХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ Arduino рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЬреЛ рдордЬрдмреВрдд рд╣реИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдб / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдПрдХ рдУрд╡рд░-рдж-рдПрдпрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрдбреЗрдЯ рд╕рдорд░реНрдерд┐рдд рд╣реИред
рдИрдПрд╕рдкреА рд╣реЛрдо рдИрдПрд╕рдкреА 8266 рдФрд░ рдИрдПрд╕рдкреА 32 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рдФрд░ рдЕрдиреНрдп рдШрд░ рдХреЗ рдмрдиреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рджрд░реНрдЬрди рд╕реЗрдВрд╕рд░ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ - рдбрд┐рд╕реНрдкреНрд▓реЗ, рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб, рдЖрджрд┐ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдП рдЧрдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MQTT, UART, I2C, SPI рдФрд░ API рдХреЛ рд╣реЛрдо рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдиреАрдЪреЗ рдИрдПрд╕рдкреА рд╣реЛрдо рдФрд░ рд╕рд░рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗрдЯрдЕрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рд╕реЛрдиреЙрдлрд╝ рдЯреА 1 рд╕реНрд╡рд┐рдЪ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░, рдЬреЛ рдПрдХ рдИрдПрд╕рдкреА 8266 рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд░рд┐рд▓реЗ, рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрд▓рдИрдбреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╢реБрджреНрдз рдкрд╛рдпрдерди рдФрд░ рдбреЙрдХрд░ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЪрд░рдг рд╣реЛрдВрдЧреЗред
рд╕реНрдерд╛рдкрдирд╛
рдкрд╛рдпрдерди 2.7 ( рдкреНрд▓реЗрдЯрдлрд╝реЛрд▓рд┐рдпреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг)
pip2 install esphome
рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐ рд╕реЗ рдбреЙрдХрд░
docker pull esphome/esphome
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛
рдИрдПрд╕рдкреА рд╣реЛрдо рдореЗрдВ рдПрдХ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдИрдПрд╕рдкреА рд╣реЛрдо рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд╣реА рдХрджрдо рдЙрдард╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо (рдЪрд▓реЛ рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд╣рддреЗ рд╣реИрдВ)
- ESP8266 (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдпрд╛ ESP32
- рдмреЛрд░реНрдб рдХрд╛ рдкреНрд░рдХрд╛рд░ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ esp01_1m рд╣реИ)
- рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╡рд╛рдИрдлрд╛рдИ рдПрдХреНрд╕реЗрд╕ рдкреЙрдЗрдВрдЯ рд╣реИ
- рд╡рд╛рдИрдлрд╛рдИ рдкрд╛рд╕рд╡рд░реНрдб
- рдПрдкреАрдЖрдИ рд╣реЛрдо рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рд╡рд╛ рдкрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ switch.yaml рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧрд╛:
esphome: name: switch platform: ESP8266 board: esp01_1m wifi: ssid: 'wifi_ap' password: 'wifi_password' # Enable logging logger: # Enable Home Assistant API api: password: 'api_password' ota: password: 'api_password'
рдпрд╣ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣рд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдЖрдЧреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдкрд╣рд▓рд╛ рдлрд░реНрдорд╡реЗрдпрд░
рдЕрдм, рдпрджрд┐ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ USB (NodeMCU) рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЬрдЧрд░ :
esphome switch.yaml run
рдИрдПрд╕рдкреА рд╣реЛрдо рдпрд╣ рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдирд╛рдо рдФрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдорд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрддрдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ / рдбрд┐рд╡рд╛рдЗрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
esphome switch.yaml compile
рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд┐рдЪ / .pioenvs / switch / рдлрд░реНрдорд╡реЗрдпрд░.bin рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА
рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░
Linux рдпрд╛ MacOS рдкрд░, рдЖрдк --device = / dev / ttyUSB0 рдбреЙрдХрд░ рдХрдорд╛рдВрдб - рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╛ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome switch.yaml compile
рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк , рдПрд╕реНрдлреЛрдо рдХрдорд╛рдВрдб рдХреЗ рд╕рдорд╛рди , рд╕реНрд╡рд┐рдЪ / .pioenvs / рд╕реНрд╡рд┐рдЪ / рдлрд░реНрдорд╡реЗрдпрд░ / рдПрдлрдУрдмреА рдлрд╝реЛрд▓реНрдбрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
рдмрд╛рдЗрдирд░реА рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ Arduino IDE рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдпреВрдПрд╕рдмреА рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрдбреЗрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдЧрд╛ред
рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓реЗрдВ
рдлрд┐рд░ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕реЗрдВрд╕рд░ # binary_sensor: # - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # , on_press: - switch.toggle: relay_1 # , - platform: status name: "Switch Status"
рд░рд┐рд▓реЗ switch: # - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1
рдПрд▓ рдИ рдбреА output: # , - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: # "", - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID ,
рдЕрдВрдд рдореЗрдВ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ esphome: name: switch platform: ESP8266 board: esp01_1m # , . on_boot: # priority: -10 then: - light.turn_on: blue_led_light wifi: ssid: 'wifi_ap' password: 'wifi_password' # logger: # Home Assistant API api: password: 'api_password' # ota: password: 'api_password' # web # web_server: port: 80 # MQTT mqtt: broker: 10.0.0.2 username: mqt_user password: mqtt_password # binary_sensor: # - platform: gpio pin: number: GPIO0 mode: INPUT_PULLUP inverted: True name: "Switch button" # , on_press: - switch.toggle: relay_1 # , - platform: status name: "Switch Status" switch: # - platform: gpio name: "Switch Relay 1" pin: GPIO12 id: relay_1 output: # , - platform: esp8266_pwm id: blue_led pin: GPIO13 inverted: True light: # "", - platform: monochromatic name: "Switch Blue LED" output: blue_led id: blue_led_light # ID ,
рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕
WEB рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣реА рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ Linux рдФрд░ MacOS рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рдЕрдЬрдЧрд░
рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
pip2 install tornado esptool
рдФрд░ рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдИрдПрд╕рдкреА рд╣реЛрдо рдЪрд▓рд╛рдПрдВ:
esphome config/ dashboard
рдбрд╛рдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛ рдордЬрд╝рджреВрд░
рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рд╕рдВрдХреЗрддрдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдореЗрдЬрдмрд╛рди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдирд┐рдореНрди рдХрдорд╛рдВрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
docker run --rm --net=host -v "${PWD}":/config -it esphome/esphome
рдЙрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:
docker run --rm --net=bridge -p 6052:6052 -v "${PWD}":/config -it esphome/esphome
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк 127.0.0.1:6052 рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рд╣реИред