From 8d9b0d23757fbbf46c061741d98a47713eb2b825 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Thu, 7 Feb 2019 13:54:45 +0100 Subject: [PATCH] Netlify (#153) * Netlify * Fix * Faster doxygen * Update Makefile * Try without api * Debug * Fix * Update Makefile * Debug * Try 1.8.13 * Remove debug * Update Makefile * Optimize --- .gitignore | 2 - Doxygen | 20 +- Makefile | 66 ++-- README.md | 2 +- _static/android-chrome-192x192.png | Bin 0 -> 5157 bytes _static/android-chrome-512x512.png | Bin 0 -> 12074 bytes _static/apple-touch-icon.png | Bin 3708 -> 3813 bytes _static/browserconfig.xml | 9 + _static/favicon-16x16.png | Bin 0 -> 695 bytes _static/favicon-32x32.png | Bin 0 -> 1186 bytes _static/favicon.ico | Bin 15086 -> 15086 bytes _static/logo-full.png | Bin 45600 -> 0 bytes _static/logo.png | Bin 8972 -> 0 bytes _static/mstile-150x150.png | Bin 0 -> 3899 bytes _static/safari-pinned-tab.svg | 1 + _static/site.webmanifest | 20 ++ _templates/layout.html | 19 +- api/binary_sensor/esp32_touch.rst | 31 -- api/binary_sensor/gpio.rst | 26 -- api/binary_sensor/index.rst | 131 ------- api/binary_sensor/pn532.rst | 19 - api/binary_sensor/rdm6300.rst | 19 - api/binary_sensor/remote_receiver.rst | 112 ------ api/binary_sensor/status.rst | 26 -- api/binary_sensor/template.rst | 16 - api/core/application.rst | 38 -- api/core/automation.rst | 7 - api/core/component.rst | 34 -- api/core/controller.rst | 23 -- api/core/deep-sleep.rst | 27 -- api/core/helpers.rst | 74 ---- api/core/i2c.rst | 20 -- api/core/index.rst | 23 -- api/core/log.rst | 15 - api/core/mqtt.rst | 96 ------ api/core/native-api.rst | 19 - api/core/ota.rst | 33 -- api/core/power-supply.rst | 25 -- api/core/spi.rst | 15 - api/core/time.rst | 9 - api/core/uart.rst | 20 -- api/core/web-server.rst | 17 - api/core/wifi.rst | 20 -- api/cover/index.rst | 53 --- api/cover/template.rst | 16 - api/display/index.rst | 59 ---- api/display/lcd_display.rst | 30 -- api/display/max7219.rst | 19 - api/display/nextion.rst | 21 -- api/display/ssd1306.rst | 24 -- api/display/waveshare_epaper.rst | 36 -- api/fan/index.rst | 80 ----- api/index.rst | 17 - api/light/addressable.rst | 12 - api/light/fastled.rst | 24 -- api/light/index.rst | 72 ---- api/light/neopixelbus.rst | 24 -- api/misc/debug.rst | 23 -- api/misc/esp32_ble_beacon.rst | 16 - api/misc/esp32_ble_tracker.rst | 60 ---- api/misc/index.rst | 7 - api/misc/pcf8574.rst | 44 --- api/misc/status_led.rst | 16 - api/misc/stepper.rst | 12 - api/output/esp8266-pwm.rst | 37 -- api/output/gpio-binary.rst | 29 -- api/output/index.rst | 45 --- api/output/ledc.rst | 31 -- api/output/my9231.rst | 30 -- api/output/pca9685.rst | 31 -- api/sensor/adc.rst | 31 -- api/sensor/ads1115.rst | 60 ---- api/sensor/apds9960.rst | 9 - api/sensor/bh1750.rst | 34 -- api/sensor/bme280.rst | 47 --- api/sensor/bme680.rst | 48 --- api/sensor/bmp085.rst | 36 -- api/sensor/bmp280.rst | 26 -- api/sensor/cse7766.rst | 22 -- api/sensor/dallas.rst | 45 --- api/sensor/dht.rst | 24 -- api/sensor/dht12.rst | 27 -- api/sensor/duty_cycle.rst | 16 - api/sensor/esp32_hall.rst | 14 - api/sensor/hdc1080.rst | 32 -- api/sensor/hlw8012.rst | 28 -- api/sensor/hmc5883l.rst | 20 -- api/sensor/htu21d.rst | 32 -- api/sensor/hx711.rst | 18 - api/sensor/ina219.rst | 20 -- api/sensor/ina3221.rst | 20 -- api/sensor/index.rst | 140 -------- api/sensor/max31855.rst | 16 - api/sensor/max6675.rst | 16 - api/sensor/mhz19.rst | 19 - api/sensor/mpu6050.rst | 43 --- api/sensor/mqtt_subscribe.rst | 16 - api/sensor/ms5611.rst | 19 - api/sensor/pmsx003.rst | 25 -- api/sensor/pulse_counter.rst | 29 -- api/sensor/rotary_encoder.rst | 16 - api/sensor/sht3xd.rst | 37 -- api/sensor/tcs34725.rst | 22 -- api/sensor/template.rst | 16 - api/sensor/total_daily_energy.rst | 16 - api/sensor/tsl2561.rst | 37 -- api/sensor/ultrasonic.rst | 31 -- api/sensor/uptime.rst | 14 - api/sensor/wifi_signal.rst | 23 -- api/switch/index.rst | 53 --- api/switch/remote_transmitter.rst | 94 ----- api/switch/restart.rst | 25 -- api/switch/shutdown.rst | 29 -- api/switch/template.rst | 14 - api/switch/uart.rst | 14 - api/text_sensor/index.rst | 40 --- api/text_sensor/mqtt_subscribe.rst | 16 - api/text_sensor/template.rst | 16 - api/text_sensor/version.rst | 16 - .../changelog => changelog}/index.rst | 2 +- .../changelog => changelog}/v1.10.0.rst | 9 +- .../changelog => changelog}/v1.7.0.rst | 32 +- .../changelog => changelog}/v1.8.0.rst | 8 +- .../changelog => changelog}/v1.9.0.rst | 24 +- .../components => components}/ads1115.rst | 9 +- .../components => components}/api.rst | 4 +- .../binary_sensor/custom.rst | 4 +- .../binary_sensor/esp32_ble_tracker.rst | 8 +- .../binary_sensor/esp32_touch.rst | 12 +- .../binary_sensor/gpio.rst | 6 +- .../binary_sensor/images/esp32_ble-ui.png | Bin .../images/esp32_touch-finding_thresholds.png | Bin .../binary_sensor/images/esp32_touch-ui.png | Bin .../binary_sensor/images/gpio-ui.png | Bin .../binary_sensor/images/pn532-full.jpg | Bin .../binary_sensor/images/pn532-spi.jpg | Bin .../binary_sensor/images/rdm6300-full.jpg | Bin .../binary_sensor/images/rdm6300-ui.png | Bin .../binary_sensor/images/status-ui.png | Bin .../binary_sensor/index.rst | 6 +- .../binary_sensor/nextion.rst | 8 +- .../binary_sensor/pn532.rst | 8 +- .../binary_sensor/rdm6300.rst | 10 +- .../binary_sensor/remote_receiver.rst | 10 +- .../binary_sensor/status.rst | 8 +- .../binary_sensor/template.rst | 8 +- .../cover/images/cover-ui.png | Bin .../components => components}/cover/index.rst | 6 +- .../cover/template.rst | 8 +- .../components => components}/dallas.rst | 4 +- .../components => components}/debug.rst | 4 +- .../components => components}/deep_sleep.rst | 4 +- .../display/images/lcd-full.jpg | Bin .../display/images/lcd-hello_world.jpg | Bin .../display/images/lcd-pcf8574.jpg | Bin .../display/images/max7219-full.jpg | Bin components/display/images/max7219/seg00.svg | 1 + components/display/images/max7219/seg01.svg | 1 + components/display/images/max7219/seg02.svg | 1 + components/display/images/max7219/seg05.svg | 1 + components/display/images/max7219/seg06.svg | 1 + components/display/images/max7219/seg07.svg | 1 + components/display/images/max7219/seg08.svg | 1 + components/display/images/max7219/seg0D.svg | 1 + components/display/images/max7219/seg0E.svg | 1 + components/display/images/max7219/seg10.svg | 1 + components/display/images/max7219/seg15.svg | 1 + components/display/images/max7219/seg17.svg | 1 + components/display/images/max7219/seg1C.svg | 1 + components/display/images/max7219/seg1D.svg | 1 + components/display/images/max7219/seg1F.svg | 1 + components/display/images/max7219/seg20.svg | 1 + components/display/images/max7219/seg22.svg | 1 + components/display/images/max7219/seg27.svg | 1 + components/display/images/max7219/seg30.svg | 1 + components/display/images/max7219/seg31.svg | 1 + components/display/images/max7219/seg33.svg | 1 + components/display/images/max7219/seg37.svg | 1 + components/display/images/max7219/seg3C.svg | 1 + components/display/images/max7219/seg3D.svg | 1 + components/display/images/max7219/seg3E.svg | 1 + components/display/images/max7219/seg3F.svg | 1 + components/display/images/max7219/seg40.svg | 1 + components/display/images/max7219/seg47.svg | 1 + components/display/images/max7219/seg48.svg | 1 + components/display/images/max7219/seg49.svg | 1 + components/display/images/max7219/seg4E.svg | 1 + components/display/images/max7219/seg4F.svg | 1 + components/display/images/max7219/seg58.svg | 1 + components/display/images/max7219/seg5B.svg | 1 + components/display/images/max7219/seg5E.svg | 1 + components/display/images/max7219/seg5F.svg | 1 + components/display/images/max7219/seg65.svg | 1 + components/display/images/max7219/seg67.svg | 1 + components/display/images/max7219/seg6D.svg | 1 + components/display/images/max7219/seg6F.svg | 1 + components/display/images/max7219/seg70.svg | 1 + components/display/images/max7219/seg73.svg | 1 + components/display/images/max7219/seg77.svg | 1 + components/display/images/max7219/seg78.svg | 1 + components/display/images/max7219/seg79.svg | 1 + components/display/images/max7219/seg7E.svg | 1 + components/display/images/max7219/seg7F.svg | 1 + components/display/images/max7219/seg80.svg | 1 + components/display/images/max7219/segB0.svg | 1 + components/display/images/max7219/segFE.svg | 1 + .../display/images/nextion-full.jpg | Bin .../display/images/ssd1306-full.jpg | Bin .../display/images/waveshare_epaper-full.jpg | Bin .../display/images/waveshare_epaper-pins.jpg | Bin .../display/index.rst | 8 +- .../display/lcd_gpio.rst | 6 +- .../display/lcd_pcf8574.rst | 6 +- .../display/max7219.rst | 10 +- .../display/nextion.rst | 9 +- .../display/ssd1306_i2c.rst | 4 +- .../display/ssd1306_spi.rst | 4 +- .../display/waveshare_epaper.rst | 4 +- .../esp32_ble_beacon.rst | 4 +- .../esp32_ble_tracker.rst | 4 +- .../components => components}/esp32_touch.rst | 8 +- .../components => components}/esphomeyaml.rst | 2 +- .../components => components}/ethernet.rst | 4 +- .../components => components}/fan/binary.rst | 10 +- .../fan/images/fan-ui.png | Bin .../components => components}/fan/index.rst | 4 +- .../components => components}/fan/speed.rst | 14 +- .../components => components}/i2c.rst | 6 +- .../images/debug.png | Bin .../images/esp32_ble_beacon-ibeacon.png | Bin .../images/logger-manual_log_level.png | Bin .../images/mqtt-availability.png | Bin .../images/pcf8574-full.jpg | Bin .../images/power_supply-atx.jpg | Bin .../images/web_server.png | Bin .../components => components}/index.rst | 0 .../light/binary.rst | 12 +- .../components => components}/light/cwww.rst | 26 +- .../light/fastled_clockless.rst | 12 +- .../light/fastled_spi.rst | 12 +- .../light/images/binary-ui.png | Bin .../light/images/fastled_clockless-ui.png | Bin .../light/images/fastled_spi-ui.png | Bin .../light/images/kitchen-lights.png | Bin .../light/images/monochromatic-detail.jpg | Bin .../light/images/monochromatic-strip.jpg | Bin .../light/images/rgb-detail.jpg | Bin .../light/images/rgb-strip.jpg | Bin .../light/images/rgb-ui.png | Bin .../components => components}/light/index.rst | 4 +- .../light/monochromatic.rst | 26 +- .../light/neopixelbus.rst | 12 +- .../components => components}/light/rgb.rst | 26 +- .../components => components}/light/rgbw.rst | 26 +- .../components => components}/light/rgbww.rst | 28 +- .../components => components}/logger.rst | 4 +- .../components => components}/mqtt.rst | 6 +- .../components => components}/my9231.rst | 8 +- .../components => components}/ota.rst | 4 +- .../output/custom.rst | 8 +- .../output/esp8266_pwm.rst | 14 +- .../components => components}/output/gpio.rst | 20 +- .../output/images/pca9685-full.jpg | Bin .../output/index.rst | 20 +- .../components => components}/output/ledc.rst | 14 +- .../output/my9231.rst | 22 +- .../output/pca9685.rst | 22 +- .../components => components}/pca9685.rst | 6 +- .../components => components}/pcf8574.rst | 4 +- .../components => components}/pn532.rst | 6 +- .../power_supply.rst | 4 +- .../components => components}/rdm6300.rst | 6 +- .../remote_receiver.rst | 4 +- .../remote_transmitter.rst | 6 +- .../components => components}/sensor/adc.rst | 4 +- .../sensor/ads1115.rst | 8 +- .../sensor/apds9960.rst | 4 +- .../sensor/bh1750.rst | 4 +- .../sensor/ble_rssi.rst | 8 +- .../sensor/bme280.rst | 4 +- .../sensor/bme680.rst | 4 +- .../sensor/bmp085.rst | 4 +- .../sensor/bmp280.rst | 6 +- .../sensor/cse7766.rst | 4 +- .../sensor/custom.rst | 2 +- .../sensor/dallas.rst | 10 +- .../components => components}/sensor/dht.rst | 4 +- .../sensor/dht12.rst | 4 +- .../sensor/duty_cycle.rst | 4 +- .../sensor/esp32_hall.rst | 6 +- .../sensor/hdc1080.rst | 4 +- .../sensor/hlw8012.rst | 4 +- .../sensor/hmc5883l.rst | 4 +- .../sensor/homeassistant.rst | 8 +- .../sensor/htu21d.rst | 4 +- .../sensor/hx711.rst | 4 +- .../sensor/images/adc-ui.png | Bin .../sensor/images/ads1115-full.jpg | Bin .../sensor/images/ads1115-ui.png | Bin .../sensor/images/apds9960-full.jpg | Bin .../sensor/images/bh1750-full.jpg | Bin .../sensor/images/bh1750-ui.png | Bin .../sensor/images/bme280-full.jpg | Bin .../sensor/images/bme280-pins.jpg | Bin .../sensor/images/bme280-ui.png | Bin .../sensor/images/bme680-full.jpg | Bin .../sensor/images/bme680-ui.png | Bin .../sensor/images/bmp180-full.jpg | Bin .../sensor/images/bmp280-full.jpg | Bin .../sensor/images/bmp280-pins.jpg | Bin .../sensor/images/custom-ui.png | Bin .../sensor/images/dallas-log.png | Bin .../sensor/images/dallas-wired.jpg | Bin .../sensor/images/dht-full.jpg | Bin .../sensor/images/dht12-full.jpg | Bin .../sensor/images/duty_cycle-ui.png | Bin .../sensor/images/esp32_hall-ui.png | Bin .../sensor/images/hdc1080-full.jpg | Bin .../sensor/images/htu21d-full.jpg | Bin .../sensor/images/hx711-full.jpg | Bin .../sensor/images/ina219-full.jpg | Bin .../sensor/images/ina219-ui.png | Bin .../sensor/images/ina3221-full.jpg | Bin .../sensor/images/ina3221-pins.jpg | Bin .../sensor/images/ina3221-ui.png | Bin .../sensor/images/max6675-full.jpg | Bin .../sensor/images/mhz19-full.jpg | Bin .../sensor/images/mhz19-pins.jpg | Bin .../sensor/images/mpu6050-full.jpg | Bin .../sensor/images/mpu6050-ui.png | Bin .../sensor/images/ms5611-full.jpg | Bin .../sensor/images/ms5611-ui.png | Bin .../sensor/images/pulse-counter.png | Bin .../sensor/images/rotary_encoder-ui.png | Bin .../sensor/images/rotary_encoder.jpg | Bin .../sensor/images/tcs34725-full.jpg | Bin .../sensor/images/tcs34725-ui.png | Bin .../sensor/images/temperature-humidity.png | Bin .../sensor/images/temperature-pressure.png | Bin .../sensor/images/temperature.png | Bin .../sensor/images/tsl2561-full.jpg | Bin .../sensor/images/tsl2561-ui.png | Bin .../sensor/images/ultrasonic-full.jpg | Bin .../sensor/images/ultrasonic-ui.png | Bin .../sensor/images/wifi_signal-ui.png | Bin .../sensor/images/xiaomi_mijia-full.jpg | Bin .../sensor/images/xiaomi_mijia-ui.png | Bin .../sensor/ina219.rst | 4 +- .../sensor/ina3221.rst | 4 +- .../sensor/index.rst | 6 +- .../sensor/max31855.rst | 4 +- .../sensor/max6675.rst | 4 +- .../sensor/mhz19.rst | 4 +- .../sensor/misc/custom-empty.h | 0 .../sensor/mpu6050.rst | 4 +- .../sensor/mqtt_subscribe.rst | 4 +- .../sensor/ms5611.rst | 4 +- .../sensor/pmsx003.rst | 4 +- .../sensor/pulse_counter.rst | 4 +- .../sensor/rotary_encoder.rst | 6 +- .../sensor/sht3xd.rst | 4 +- .../sensor/tcs34725.rst | 4 +- .../sensor/template.rst | 4 +- .../sensor/total_daily_energy.rst | 6 +- .../sensor/tsl2561.rst | 4 +- .../sensor/ultrasonic.rst | 4 +- .../sensor/uptime.rst | 4 +- .../sensor/wifi_signal.rst | 8 +- .../sensor/xiaomi_miflora.rst | 12 +- .../sensor/xiaomi_mijia.rst | 12 +- .../components => components}/spi.rst | 4 +- .../components => components}/status_led.rst | 4 +- .../stepper/index.rst | 4 +- .../switch/custom.rst | 4 +- .../components => components}/switch/gpio.rst | 10 +- .../switch/images/gate-remote-ui.png | Bin .../switch/images/gpio-ui.png | Bin .../switch/images/output-ui.png | Bin .../switch/images/remote_transmitter-ui.png | Bin .../switch/images/restart-ui.png | Bin .../switch/images/rf_receiver-log_raw.png | Bin .../switch/images/shutdown-ui.png | Bin .../switch/index.rst | 6 +- .../switch/output.rst | 6 +- .../switch/remote_transmitter.rst | 16 +- .../switch/restart.rst | 4 +- .../switch/shutdown.rst | 4 +- .../switch/template.rst | 12 +- .../components => components}/switch/uart.rst | 8 +- .../text_sensor/custom.rst | 4 +- .../text_sensor/homeassistant.rst | 6 +- .../text_sensor/images/version-ui.png | Bin .../text_sensor/index.rst | 8 +- .../text_sensor/mqtt_subscribe.rst | 4 +- .../text_sensor/template.rst | 4 +- .../text_sensor/version.rst | 4 +- .../components => components}/time.rst | 6 +- .../components => components}/uart.rst | 4 +- .../components => components}/web_server.rst | 6 +- .../components => components}/wifi.rst | 4 +- conf.py | 11 +- .../bme280_environment.rst | 16 +- {esphomeyaml/cookbook => cookbook}/bruh.rst | 14 +- .../cookbook => cookbook}/dual-r2-cover.rst | 8 +- .../cookbook => cookbook}/garage-door.rst | 8 +- .../images/bme280-header.jpg | Bin .../images/pir-header.jpg | Bin .../images/pir-inside.jpg | Bin .../cookbook => cookbook}/images/pir-pins.jpg | Bin .../cookbook => cookbook}/images/pir-ui.png | Bin .../images/power_meter-header.jpg | Bin .../images/relay-full.jpg | Bin .../sonoff-fishpond-pump-1-programming.jpg | Bin .../sonoff-fishpond-pump-and-sensor.jpg | Bin .../images/sonoff-fishpond-pump-gpio14.jpg | Bin .../images/sonoff-fishpond-pump-installed.jpg | Bin .../images/sonoff-fishpond.jpg | Bin .../images/temt6000-header.jpg | Bin .../images/temt6000-pins.jpg | Bin {esphomeyaml/cookbook => cookbook}/index.rst | 0 {esphomeyaml/cookbook => cookbook}/pir.rst | 6 +- .../cookbook => cookbook}/power_meter.rst | 8 +- {esphomeyaml/cookbook => cookbook}/relay.rst | 14 +- .../sonoff-fishpond-pump.rst | 4 +- .../cookbook => cookbook}/temt6000.rst | 8 +- .../custom => custom}/custom_component.rst | 4 +- {esphomeyaml/custom => custom}/i2c.rst | 2 +- {esphomeyaml/custom => custom}/index.rst | 0 {esphomeyaml/custom => custom}/spi.rst | 2 +- {esphomeyaml/custom => custom}/uart.rst | 2 +- {esphomeyaml/devices => devices}/esp32.rst | 6 +- {esphomeyaml/devices => devices}/esp8266.rst | 4 +- .../images/nodemcu_esp32-full.jpg | Bin .../images/nodemcu_esp8266-full.jpg | Bin .../images/sonoff_4ch_buttons.jpg | Bin .../images/sonoff_4ch_header.jpg | Bin .../images/sonoff_4ch_mcu.jpg | Bin .../images/sonoff_4ch_result.png | Bin .../images/sonoff_4ch_top.jpg | Bin .../images/sonoff_4ch_uart.jpg | Bin .../images/sonoff_4ch_upload.png | Bin .../images/sonoff_basic-full.jpg | Bin .../images/sonoff_s20_header.jpg | Bin .../images/sonoff_s20_parts.jpg | Bin .../images/sonoff_s20_pcb.jpg | Bin .../images/sonoff_s20_result.png | Bin .../images/sonoff_s20_screws.jpg | Bin .../images/sonoff_s20_uart.jpg | Bin .../images/sonoff_s20_upload.png | Bin {esphomeyaml/devices => devices}/index.rst | 0 .../devices => devices}/nodemcu_esp32.rst | 6 +- .../devices => devices}/nodemcu_esp8266.rst | 6 +- {esphomeyaml/devices => devices}/sonoff.rst | 34 +- .../devices => devices}/sonoff_4ch.rst | 6 +- .../devices => devices}/sonoff_4ch.yaml | 0 .../devices => devices}/sonoff_basic.rst | 4 +- .../devices => devices}/sonoff_s20.rst | 6 +- .../devices => devices}/sonoff_s20.yaml | 0 .../display/images/max7219/seg00.svg | 103 ------ .../display/images/max7219/seg01.svg | 103 ------ .../display/images/max7219/seg02.svg | 103 ------ .../display/images/max7219/seg05.svg | 103 ------ .../display/images/max7219/seg06.svg | 103 ------ .../display/images/max7219/seg07.svg | 103 ------ .../display/images/max7219/seg08.svg | 103 ------ .../display/images/max7219/seg0D.svg | 103 ------ .../display/images/max7219/seg0E.svg | 103 ------ .../display/images/max7219/seg10.svg | 103 ------ .../display/images/max7219/seg15.svg | 103 ------ .../display/images/max7219/seg17.svg | 103 ------ .../display/images/max7219/seg1C.svg | 103 ------ .../display/images/max7219/seg1D.svg | 103 ------ .../display/images/max7219/seg1F.svg | 103 ------ .../display/images/max7219/seg20.svg | 103 ------ .../display/images/max7219/seg22.svg | 103 ------ .../display/images/max7219/seg27.svg | 103 ------ .../display/images/max7219/seg30.svg | 103 ------ .../display/images/max7219/seg31.svg | 103 ------ .../display/images/max7219/seg33.svg | 103 ------ .../display/images/max7219/seg37.svg | 103 ------ .../display/images/max7219/seg3C.svg | 103 ------ .../display/images/max7219/seg3D.svg | 103 ------ .../display/images/max7219/seg3E.svg | 103 ------ .../display/images/max7219/seg3F.svg | 103 ------ .../display/images/max7219/seg40.svg | 103 ------ .../display/images/max7219/seg47.svg | 103 ------ .../display/images/max7219/seg48.svg | 103 ------ .../display/images/max7219/seg49.svg | 103 ------ .../display/images/max7219/seg4E.svg | 103 ------ .../display/images/max7219/seg4F.svg | 103 ------ .../display/images/max7219/seg58.svg | 103 ------ .../display/images/max7219/seg5B.svg | 103 ------ .../display/images/max7219/seg5E.svg | 103 ------ .../display/images/max7219/seg5F.svg | 103 ------ .../display/images/max7219/seg65.svg | 103 ------ .../display/images/max7219/seg67.svg | 103 ------ .../display/images/max7219/seg6D.svg | 103 ------ .../display/images/max7219/seg6F.svg | 103 ------ .../display/images/max7219/seg70.svg | 103 ------ .../display/images/max7219/seg73.svg | 103 ------ .../display/images/max7219/seg77.svg | 103 ------ .../display/images/max7219/seg78.svg | 103 ------ .../display/images/max7219/seg79.svg | 103 ------ .../display/images/max7219/seg7E.svg | 103 ------ .../display/images/max7219/seg7F.svg | 103 ------ .../display/images/max7219/seg80.svg | 103 ------ .../display/images/max7219/segB0.svg | 103 ------ .../display/images/max7219/segFE.svg | 103 ------ esphomeyaml/images/auto-fix.svg | 1 - esphomeyaml/images/bluetooth.svg | 4 - esphomeyaml/images/brightness-medium.svg | 4 - esphomeyaml/images/bug-report.svg | 4 - esphomeyaml/images/build.svg | 4 - esphomeyaml/images/clock-outline.svg | 1 - esphomeyaml/images/cloud-circle.svg | 1 - esphomeyaml/images/color_lens.svg | 4 - esphomeyaml/images/console.svg | 1 - esphomeyaml/images/creation.svg | 1 - esphomeyaml/images/cse7766.svg | 36 -- esphomeyaml/images/description.svg | 4 - esphomeyaml/images/download.svg | 1 - esphomeyaml/images/esp32.svg | 36 -- esphomeyaml/images/esp8266.svg | 36 -- esphomeyaml/images/espeasy.svg | 36 -- esphomeyaml/images/esphomeyaml-logo-full.svg | 158 --------- esphomeyaml/images/espurna.svg | 36 -- esphomeyaml/images/ethernet.svg | 1 - esphomeyaml/images/fan.svg | 1 - esphomeyaml/images/file-document-box.svg | 1 - esphomeyaml/images/flash.svg | 4 - esphomeyaml/images/folder-open.svg | 4 - esphomeyaml/images/github-circle.svg | 1 - esphomeyaml/images/hlw8012.svg | 36 -- esphomeyaml/images/home-assistant.svg | 1 - esphomeyaml/images/hotel.svg | 4 - esphomeyaml/images/http.svg | 4 - esphomeyaml/images/i2c.svg | 82 ----- esphomeyaml/images/language-cpp.svg | 1 - esphomeyaml/images/led-on.svg | 1 - esphomeyaml/images/lightbulb.svg | 1 - esphomeyaml/images/logo-full.svg | 153 -------- esphomeyaml/images/logo.svg | 79 ----- esphomeyaml/images/magnet.svg | 1 - esphomeyaml/images/my9231.svg | 36 -- esphomeyaml/images/network-wifi.svg | 5 - esphomeyaml/images/new-box.svg | 1 - esphomeyaml/images/percent.svg | 1 - esphomeyaml/images/pin.svg | 4 - esphomeyaml/images/pmsx003.svg | 36 -- esphomeyaml/images/power.svg | 4 - esphomeyaml/images/power_settings.svg | 4 - esphomeyaml/images/pulse.svg | 1 - esphomeyaml/images/puzzle.svg | 1 - esphomeyaml/images/question_answer.svg | 4 - esphomeyaml/images/remote.svg | 4 - esphomeyaml/images/restart.svg | 1 - esphomeyaml/images/server-network.svg | 1 - esphomeyaml/images/settings.svg | 4 - esphomeyaml/images/sigma.svg | 1 - esphomeyaml/images/sonoff.svg | 1 - esphomeyaml/images/spi.svg | 36 -- esphomeyaml/images/stepper.svg | 36 -- esphomeyaml/images/system-update.svg | 4 - esphomeyaml/images/tasmota.svg | 36 -- esphomeyaml/images/timer.svg | 1 - esphomeyaml/images/touch.svg | 9 - esphomeyaml/images/uart.svg | 36 -- esphomeyaml/images/upload.svg | 1 - esphomeyaml/images/window-open.svg | 1 - esphomeyaml/index.rst | 308 ----------------- github.py | 31 +- githubpages.py | 18 - .../guides => guides}/automations.rst | 6 +- {esphomeyaml/guides => guides}/changelog.rst | 0 {esphomeyaml/guides => guides}/cli.rst | 0 .../guides => guides}/configuration-types.rst | 6 +- .../guides => guides}/contributing.rst | 29 +- {esphomeyaml/guides => guides}/faq.rst | 10 +- .../getting_started_command_line.rst | 14 +- .../getting_started_hassio.rst | 18 +- .../guides => guides}/images/dashboard.png | Bin .../images/download_binary.png | Bin .../guides => guides}/images/espeasy_ota.png | Bin .../images/esphomeflasher-ui.png | Bin .../guides => guides}/images/espurna_ota.png | Bin .../images/espurna_upload.png | Bin .../guides => guides}/images/hassio_addon.png | Bin .../images/hassio_interface.png | Bin .../guides => guides}/images/hassio_repo.png | Bin .../guides => guides}/images/hassio_start.png | Bin .../guides => guides}/images/tasmota_main.png | Bin .../guides => guides}/images/tasmota_ota.png | Bin .../images/tasmota_upload.png | Bin {esphomeyaml/guides => guides}/index.rst | 0 .../guides => guides}/migrate_espeasy.rst | 14 +- .../guides => guides}/migrate_espurna.rst | 14 +- .../migrate_sonoff_tasmota.rst | 16 +- {esphomeyaml/images => images}/ads1115.jpg | Bin {esphomeyaml/images => images}/apds9960.jpg | Bin images/auto-fix.svg | 1 + {esphomeyaml/images => images}/bh1750.jpg | Bin images/bluetooth.svg | 1 + {esphomeyaml/images => images}/bme280.jpg | Bin {esphomeyaml/images => images}/bme680.jpg | Bin {esphomeyaml/images => images}/bmp180.jpg | Bin {esphomeyaml/images => images}/bmp280.jpg | Bin images/brightness-medium.svg | 1 + {esphomeyaml/images => images}/bruh.png | Bin images/bug-report.svg | 1 + images/build.svg | 1 + images/clock-outline.svg | 1 + images/cloud-circle.svg | 1 + images/color_lens.svg | 1 + images/console.svg | 1 + .../cookbook-sonoff-fishpond-pump.jpg | Bin images/creation.svg | 1 + images/cse7766.svg | 1 + {esphomeyaml/images => images}/dallas.jpg | Bin images/description.svg | 1 + {esphomeyaml/images => images}/dht.jpg | Bin {esphomeyaml/images => images}/dht12.jpg | Bin images/download.svg | 1 + images/esp32.svg | 1 + images/esp8266.svg | 1 + images/espeasy.svg | 1 + images/espurna.svg | 1 + images/ethernet.svg | 1 + images/fan.svg | 1 + images/file-document-box.svg | 1 + images/flash.svg | 1 + images/folder-open.svg | 1 + images/github-circle.svg | 1 + {esphomeyaml/images => images}/hdc1080.jpg | Bin images/hlw8012.svg | 1 + {esphomeyaml/images => images}/hmc5883l.jpg | Bin images/home-assistant.svg | 1 + images/hotel.svg | 1 + images/http.svg | 1 + {esphomeyaml/images => images}/htu21d.jpg | Bin {esphomeyaml/images => images}/hx711.jpg | Bin images/i2c.svg | 1 + {esphomeyaml/images => images}/ina219.jpg | Bin {esphomeyaml/images => images}/ina3221.jpg | Bin images/language-cpp.svg | 1 + {esphomeyaml/images => images}/lcd.jpg | Bin images/led-on.svg | 1 + images/lightbulb.svg | 1 + images/logo-core.svg | 1 + images/logo-docs.svg | 1 + images/logo-flasher.svg | 1 + images/logo-release.svg | 1 + images/logo-text.svg | 1 + images/logo.svg | 1 + images/logo.svg.png | Bin 0 -> 17002 bytes images/magnet.svg | 1 + {esphomeyaml/images => images}/max31855.jpg | Bin {esphomeyaml/images => images}/max6675.jpg | Bin {esphomeyaml/images => images}/max7219.jpg | Bin {esphomeyaml/images => images}/mhz19.jpg | Bin {esphomeyaml/images => images}/mpu6050.jpg | Bin {esphomeyaml/images => images}/mqtt.png | Bin {esphomeyaml/images => images}/ms5611.jpg | Bin images/my9231.svg | 1 + images/network-wifi.svg | 1 + images/new-box.svg | 1 + {esphomeyaml/images => images}/nextion.jpg | Bin .../images => images}/nodemcu_esp32.jpg | Bin .../images => images}/nodemcu_esp8266.jpg | Bin {esphomeyaml/images => images}/pca9685.jpg | Bin {esphomeyaml/images => images}/pcf8574.jpg | Bin images/percent.svg | 1 + images/pin.svg | 1 + {esphomeyaml/images => images}/pir.jpg | Bin images/pmsx003.svg | 1 + {esphomeyaml/images => images}/pn532.jpg | Bin images/power.svg | 1 + .../images => images}/power_meter.jpg | Bin images/power_settings.svg | 1 + images/pulse.svg | 1 + images/puzzle.svg | 1 + {esphomeyaml/images => images}/pwm.png | Bin images/question_answer.svg | 1 + {esphomeyaml/images => images}/rdm6300.jpg | Bin {esphomeyaml/images => images}/relay.jpg | Bin images/remote.svg | 1 + images/restart.svg | 1 + {esphomeyaml/images => images}/rgb.png | Bin {esphomeyaml/images => images}/rgbw.png | Bin .../images => images}/rotary_encoder.jpg | Bin images/server-network.svg | 1 + images/settings.svg | 1 + {esphomeyaml/images => images}/sht3xd.jpg | Bin images/sigma.svg | 1 + images/sonoff.svg | 1 + {esphomeyaml/images => images}/sonoff_4ch.jpg | Bin .../images => images}/sonoff_basic.jpg | Bin .../images => images}/sonoff_dual_r2.jpg | Bin {esphomeyaml/images => images}/sonoff_s20.jpg | Bin images/spi.svg | 1 + {esphomeyaml/images => images}/ssd1306.jpg | Bin images/stepper.svg | 1 + images/system-update.svg | 1 + images/tasmota.svg | 1 + {esphomeyaml/images => images}/tcs34725.jpg | Bin {esphomeyaml/images => images}/temt6000.jpg | Bin images/timer.svg | 1 + images/touch.svg | 1 + {esphomeyaml/images => images}/tsl2561.jpg | Bin images/uart.svg | 1 + {esphomeyaml/images => images}/ultrasonic.jpg | Bin images/upload.svg | 1 + .../images => images}/waveshare_epaper.jpg | Bin images/window-open.svg | 1 + .../images => images}/xiaomi_miflora.jpg | Bin .../images => images}/xiaomi_mijia.jpg | Bin index.rst | 326 ++++++++++++++++-- netlify.toml | 12 + requirements.txt | 3 +- runtime.txt | 1 + seo.py | 11 +- sonoff-generator.py | 45 --- svg2png.py | 33 +- svg2png/README.md | 13 + svg2png/auto-fix.png | Bin 0 -> 24967 bytes svg2png/bluetooth.png | Bin 0 -> 10733 bytes svg2png/brightness-medium.png | Bin 0 -> 13213 bytes svg2png/bug-report.png | Bin 0 -> 13301 bytes svg2png/clock-outline.png | Bin 0 -> 35175 bytes svg2png/cloud-circle.png | Bin 0 -> 28284 bytes svg2png/color_lens.png | Bin 0 -> 28543 bytes svg2png/console.png | Bin 0 -> 11464 bytes svg2png/creation.png | Bin 0 -> 26475 bytes svg2png/cse7766.png | Bin 0 -> 19395 bytes svg2png/description.png | Bin 0 -> 8946 bytes svg2png/download.png | Bin 0 -> 5855 bytes svg2png/esp32.png | Bin 0 -> 17843 bytes svg2png/esp8266.png | Bin 0 -> 19136 bytes svg2png/espeasy.png | Bin 0 -> 16548 bytes svg2png/espurna.png | Bin 0 -> 13172 bytes svg2png/ethernet.png | Bin 0 -> 8833 bytes svg2png/fan.png | Bin 0 -> 29701 bytes svg2png/file-document-box.png | Bin 0 -> 8240 bytes svg2png/flash.png | Bin 0 -> 9473 bytes svg2png/folder-open.png | Bin 0 -> 8985 bytes svg2png/github-circle.png | Bin 0 -> 32742 bytes svg2png/hlw8012.png | Bin 0 -> 15353 bytes svg2png/home-assistant.png | Bin 0 -> 22500 bytes svg2png/hotel.png | Bin 0 -> 11633 bytes svg2png/http.png | Bin 0 -> 6160 bytes svg2png/i2c.png | Bin 0 -> 43035 bytes svg2png/language-cpp.png | Bin 0 -> 16842 bytes svg2png/led-on.png | Bin 0 -> 13533 bytes svg2png/lightbulb.png | Bin 0 -> 16298 bytes svg2png/logo-text.png | Bin 0 -> 16889 bytes svg2png/logo.png | Bin 0 -> 21051 bytes svg2png/magnet.png | Bin 0 -> 16102 bytes svg2png/my9231.png | Bin 0 -> 17340 bytes svg2png/network-wifi.png | Bin 0 -> 23679 bytes svg2png/new-box.png | Bin 0 -> 11460 bytes svg2png/percent.png | Bin 0 -> 18408 bytes svg2png/pin.png | Bin 0 -> 12326 bytes svg2png/pmsx003.png | Bin 0 -> 19309 bytes svg2png/power.png | Bin 0 -> 8887 bytes svg2png/power_settings.png | Bin 0 -> 25364 bytes svg2png/pulse.png | Bin 0 -> 17435 bytes svg2png/question_answer.png | Bin 0 -> 7837 bytes svg2png/remote.png | Bin 0 -> 22139 bytes svg2png/restart.png | Bin 0 -> 26592 bytes svg2png/server-network.png | Bin 0 -> 10077 bytes svg2png/settings.png | Bin 0 -> 27454 bytes svg2png/sigma.png | Bin 0 -> 11231 bytes svg2png/sonoff.png | Bin 0 -> 11790 bytes svg2png/spi.png | Bin 0 -> 19713 bytes svg2png/stepper.png | Bin 0 -> 12074 bytes svg2png/system-update.png | Bin 0 -> 9166 bytes svg2png/tasmota.png | Bin 0 -> 16760 bytes svg2png/timer.png | Bin 0 -> 30154 bytes svg2png/touch.png | Bin 0 -> 19435 bytes svg2png/uart.png | Bin 0 -> 14495 bytes svg2png/upload.png | Bin 0 -> 5894 bytes svg2png/window-open.png | Bin 0 -> 8303 bytes web-api/index.rst | 2 +- 782 files changed, 1225 insertions(+), 10548 deletions(-) create mode 100644 _static/android-chrome-192x192.png create mode 100644 _static/android-chrome-512x512.png create mode 100644 _static/browserconfig.xml create mode 100644 _static/favicon-16x16.png create mode 100644 _static/favicon-32x32.png delete mode 100644 _static/logo-full.png delete mode 100644 _static/logo.png create mode 100644 _static/mstile-150x150.png create mode 100644 _static/safari-pinned-tab.svg create mode 100644 _static/site.webmanifest delete mode 100644 api/binary_sensor/esp32_touch.rst delete mode 100644 api/binary_sensor/gpio.rst delete mode 100644 api/binary_sensor/index.rst delete mode 100644 api/binary_sensor/pn532.rst delete mode 100644 api/binary_sensor/rdm6300.rst delete mode 100644 api/binary_sensor/remote_receiver.rst delete mode 100644 api/binary_sensor/status.rst delete mode 100644 api/binary_sensor/template.rst delete mode 100644 api/core/application.rst delete mode 100644 api/core/automation.rst delete mode 100644 api/core/component.rst delete mode 100644 api/core/controller.rst delete mode 100644 api/core/deep-sleep.rst delete mode 100644 api/core/helpers.rst delete mode 100644 api/core/i2c.rst delete mode 100644 api/core/index.rst delete mode 100644 api/core/log.rst delete mode 100644 api/core/mqtt.rst delete mode 100644 api/core/native-api.rst delete mode 100644 api/core/ota.rst delete mode 100644 api/core/power-supply.rst delete mode 100644 api/core/spi.rst delete mode 100644 api/core/time.rst delete mode 100644 api/core/uart.rst delete mode 100644 api/core/web-server.rst delete mode 100644 api/core/wifi.rst delete mode 100644 api/cover/index.rst delete mode 100644 api/cover/template.rst delete mode 100644 api/display/index.rst delete mode 100644 api/display/lcd_display.rst delete mode 100644 api/display/max7219.rst delete mode 100644 api/display/nextion.rst delete mode 100644 api/display/ssd1306.rst delete mode 100644 api/display/waveshare_epaper.rst delete mode 100644 api/fan/index.rst delete mode 100644 api/index.rst delete mode 100644 api/light/addressable.rst delete mode 100644 api/light/fastled.rst delete mode 100644 api/light/index.rst delete mode 100644 api/light/neopixelbus.rst delete mode 100644 api/misc/debug.rst delete mode 100644 api/misc/esp32_ble_beacon.rst delete mode 100644 api/misc/esp32_ble_tracker.rst delete mode 100644 api/misc/index.rst delete mode 100644 api/misc/pcf8574.rst delete mode 100644 api/misc/status_led.rst delete mode 100644 api/misc/stepper.rst delete mode 100644 api/output/esp8266-pwm.rst delete mode 100644 api/output/gpio-binary.rst delete mode 100644 api/output/index.rst delete mode 100644 api/output/ledc.rst delete mode 100644 api/output/my9231.rst delete mode 100644 api/output/pca9685.rst delete mode 100644 api/sensor/adc.rst delete mode 100644 api/sensor/ads1115.rst delete mode 100644 api/sensor/apds9960.rst delete mode 100644 api/sensor/bh1750.rst delete mode 100644 api/sensor/bme280.rst delete mode 100644 api/sensor/bme680.rst delete mode 100644 api/sensor/bmp085.rst delete mode 100644 api/sensor/bmp280.rst delete mode 100644 api/sensor/cse7766.rst delete mode 100644 api/sensor/dallas.rst delete mode 100644 api/sensor/dht.rst delete mode 100644 api/sensor/dht12.rst delete mode 100644 api/sensor/duty_cycle.rst delete mode 100644 api/sensor/esp32_hall.rst delete mode 100644 api/sensor/hdc1080.rst delete mode 100644 api/sensor/hlw8012.rst delete mode 100644 api/sensor/hmc5883l.rst delete mode 100644 api/sensor/htu21d.rst delete mode 100644 api/sensor/hx711.rst delete mode 100644 api/sensor/ina219.rst delete mode 100644 api/sensor/ina3221.rst delete mode 100644 api/sensor/index.rst delete mode 100644 api/sensor/max31855.rst delete mode 100644 api/sensor/max6675.rst delete mode 100644 api/sensor/mhz19.rst delete mode 100644 api/sensor/mpu6050.rst delete mode 100644 api/sensor/mqtt_subscribe.rst delete mode 100644 api/sensor/ms5611.rst delete mode 100644 api/sensor/pmsx003.rst delete mode 100644 api/sensor/pulse_counter.rst delete mode 100644 api/sensor/rotary_encoder.rst delete mode 100644 api/sensor/sht3xd.rst delete mode 100644 api/sensor/tcs34725.rst delete mode 100644 api/sensor/template.rst delete mode 100644 api/sensor/total_daily_energy.rst delete mode 100644 api/sensor/tsl2561.rst delete mode 100644 api/sensor/ultrasonic.rst delete mode 100644 api/sensor/uptime.rst delete mode 100644 api/sensor/wifi_signal.rst delete mode 100644 api/switch/index.rst delete mode 100644 api/switch/remote_transmitter.rst delete mode 100644 api/switch/restart.rst delete mode 100644 api/switch/shutdown.rst delete mode 100644 api/switch/template.rst delete mode 100644 api/switch/uart.rst delete mode 100644 api/text_sensor/index.rst delete mode 100644 api/text_sensor/mqtt_subscribe.rst delete mode 100644 api/text_sensor/template.rst delete mode 100644 api/text_sensor/version.rst rename {esphomeyaml/changelog => changelog}/index.rst (67%) rename {esphomeyaml/changelog => changelog}/v1.10.0.rst (98%) rename {esphomeyaml/changelog => changelog}/v1.7.0.rst (86%) rename {esphomeyaml/changelog => changelog}/v1.8.0.rst (97%) rename {esphomeyaml/changelog => changelog}/v1.9.0.rst (93%) rename {esphomeyaml/components => components}/ads1115.rst (81%) rename {esphomeyaml/components => components}/api.rst (97%) rename {esphomeyaml/components => components}/binary_sensor/custom.rst (90%) rename {esphomeyaml/components => components}/binary_sensor/esp32_ble_tracker.rst (89%) rename {esphomeyaml/components => components}/binary_sensor/esp32_touch.rst (88%) rename {esphomeyaml/components => components}/binary_sensor/gpio.rst (91%) rename {esphomeyaml/components => components}/binary_sensor/images/esp32_ble-ui.png (100%) rename {esphomeyaml/components => components}/binary_sensor/images/esp32_touch-finding_thresholds.png (100%) rename {esphomeyaml/components => components}/binary_sensor/images/esp32_touch-ui.png (100%) rename {esphomeyaml/components => components}/binary_sensor/images/gpio-ui.png (100%) rename {esphomeyaml/components => components}/binary_sensor/images/pn532-full.jpg (100%) rename {esphomeyaml/components => components}/binary_sensor/images/pn532-spi.jpg (100%) rename {esphomeyaml/components => components}/binary_sensor/images/rdm6300-full.jpg (100%) rename {esphomeyaml/components => components}/binary_sensor/images/rdm6300-ui.png (100%) rename {esphomeyaml/components => components}/binary_sensor/images/status-ui.png (100%) rename {esphomeyaml/components => components}/binary_sensor/index.rst (97%) rename {esphomeyaml/components => components}/binary_sensor/nextion.rst (80%) rename {esphomeyaml/components => components}/binary_sensor/pn532.rst (83%) rename {esphomeyaml/components => components}/binary_sensor/rdm6300.rst (80%) rename {esphomeyaml/components => components}/binary_sensor/remote_receiver.rst (85%) rename {esphomeyaml/components => components}/binary_sensor/status.rst (77%) rename {esphomeyaml/components => components}/binary_sensor/template.rst (86%) rename {esphomeyaml/components => components}/cover/images/cover-ui.png (100%) rename {esphomeyaml/components => components}/cover/index.rst (89%) rename {esphomeyaml/components => components}/cover/template.rst (90%) rename {esphomeyaml/components => components}/dallas.rst (91%) rename {esphomeyaml/components => components}/debug.rst (80%) rename {esphomeyaml/components => components}/deep_sleep.rst (97%) rename {esphomeyaml/components => components}/display/images/lcd-full.jpg (100%) rename {esphomeyaml/components => components}/display/images/lcd-hello_world.jpg (100%) rename {esphomeyaml/components => components}/display/images/lcd-pcf8574.jpg (100%) rename {esphomeyaml/components => components}/display/images/max7219-full.jpg (100%) create mode 100644 components/display/images/max7219/seg00.svg create mode 100644 components/display/images/max7219/seg01.svg create mode 100644 components/display/images/max7219/seg02.svg create mode 100644 components/display/images/max7219/seg05.svg create mode 100644 components/display/images/max7219/seg06.svg create mode 100644 components/display/images/max7219/seg07.svg create mode 100644 components/display/images/max7219/seg08.svg create mode 100644 components/display/images/max7219/seg0D.svg create mode 100644 components/display/images/max7219/seg0E.svg create mode 100644 components/display/images/max7219/seg10.svg create mode 100644 components/display/images/max7219/seg15.svg create mode 100644 components/display/images/max7219/seg17.svg create mode 100644 components/display/images/max7219/seg1C.svg create mode 100644 components/display/images/max7219/seg1D.svg create mode 100644 components/display/images/max7219/seg1F.svg create mode 100644 components/display/images/max7219/seg20.svg create mode 100644 components/display/images/max7219/seg22.svg create mode 100644 components/display/images/max7219/seg27.svg create mode 100644 components/display/images/max7219/seg30.svg create mode 100644 components/display/images/max7219/seg31.svg create mode 100644 components/display/images/max7219/seg33.svg create mode 100644 components/display/images/max7219/seg37.svg create mode 100644 components/display/images/max7219/seg3C.svg create mode 100644 components/display/images/max7219/seg3D.svg create mode 100644 components/display/images/max7219/seg3E.svg create mode 100644 components/display/images/max7219/seg3F.svg create mode 100644 components/display/images/max7219/seg40.svg create mode 100644 components/display/images/max7219/seg47.svg create mode 100644 components/display/images/max7219/seg48.svg create mode 100644 components/display/images/max7219/seg49.svg create mode 100644 components/display/images/max7219/seg4E.svg create mode 100644 components/display/images/max7219/seg4F.svg create mode 100644 components/display/images/max7219/seg58.svg create mode 100644 components/display/images/max7219/seg5B.svg create mode 100644 components/display/images/max7219/seg5E.svg create mode 100644 components/display/images/max7219/seg5F.svg create mode 100644 components/display/images/max7219/seg65.svg create mode 100644 components/display/images/max7219/seg67.svg create mode 100644 components/display/images/max7219/seg6D.svg create mode 100644 components/display/images/max7219/seg6F.svg create mode 100644 components/display/images/max7219/seg70.svg create mode 100644 components/display/images/max7219/seg73.svg create mode 100644 components/display/images/max7219/seg77.svg create mode 100644 components/display/images/max7219/seg78.svg create mode 100644 components/display/images/max7219/seg79.svg create mode 100644 components/display/images/max7219/seg7E.svg create mode 100644 components/display/images/max7219/seg7F.svg create mode 100644 components/display/images/max7219/seg80.svg create mode 100644 components/display/images/max7219/segB0.svg create mode 100644 components/display/images/max7219/segFE.svg rename {esphomeyaml/components => components}/display/images/nextion-full.jpg (100%) rename {esphomeyaml/components => components}/display/images/ssd1306-full.jpg (100%) rename {esphomeyaml/components => components}/display/images/waveshare_epaper-full.jpg (100%) rename {esphomeyaml/components => components}/display/images/waveshare_epaper-pins.jpg (100%) rename {esphomeyaml/components => components}/display/index.rst (97%) rename {esphomeyaml/components => components}/display/lcd_gpio.rst (94%) rename {esphomeyaml/components => components}/display/lcd_pcf8574.rst (90%) rename {esphomeyaml/components => components}/display/max7219.rst (97%) rename {esphomeyaml/components => components}/display/nextion.rst (89%) rename {esphomeyaml/components => components}/display/ssd1306_i2c.rst (93%) rename {esphomeyaml/components => components}/display/ssd1306_spi.rst (94%) rename {esphomeyaml/components => components}/display/waveshare_epaper.rst (96%) rename {esphomeyaml/components => components}/esp32_ble_beacon.rst (94%) rename {esphomeyaml/components => components}/esp32_ble_tracker.rst (92%) rename {esphomeyaml/components => components}/esp32_touch.rst (88%) rename {esphomeyaml/components => components}/esphomeyaml.rst (98%) rename {esphomeyaml/components => components}/ethernet.rst (94%) rename {esphomeyaml/components => components}/fan/binary.rst (77%) rename {esphomeyaml/components => components}/fan/images/fan-ui.png (100%) rename {esphomeyaml/components => components}/fan/index.rst (93%) rename {esphomeyaml/components => components}/fan/speed.rst (79%) rename {esphomeyaml/components => components}/i2c.rst (88%) rename {esphomeyaml/components => components}/images/debug.png (100%) rename {esphomeyaml/components => components}/images/esp32_ble_beacon-ibeacon.png (100%) rename {esphomeyaml/components => components}/images/logger-manual_log_level.png (100%) rename {esphomeyaml/components => components}/images/mqtt-availability.png (100%) rename {esphomeyaml/components => components}/images/pcf8574-full.jpg (100%) rename {esphomeyaml/components => components}/images/power_supply-atx.jpg (100%) rename {esphomeyaml/components => components}/images/web_server.png (100%) rename {esphomeyaml/components => components}/index.rst (100%) rename {esphomeyaml/components => components}/light/binary.rst (74%) rename {esphomeyaml/components => components}/light/cwww.rst (73%) rename {esphomeyaml/components => components}/light/fastled_clockless.rst (88%) rename {esphomeyaml/components => components}/light/fastled_spi.rst (87%) rename {esphomeyaml/components => components}/light/images/binary-ui.png (100%) rename {esphomeyaml/components => components}/light/images/fastled_clockless-ui.png (100%) rename {esphomeyaml/components => components}/light/images/fastled_spi-ui.png (100%) rename {esphomeyaml/components => components}/light/images/kitchen-lights.png (100%) rename {esphomeyaml/components => components}/light/images/monochromatic-detail.jpg (100%) rename {esphomeyaml/components => components}/light/images/monochromatic-strip.jpg (100%) rename {esphomeyaml/components => components}/light/images/rgb-detail.jpg (100%) rename {esphomeyaml/components => components}/light/images/rgb-strip.jpg (100%) rename {esphomeyaml/components => components}/light/images/rgb-ui.png (100%) rename {esphomeyaml/components => components}/light/index.rst (99%) rename {esphomeyaml/components => components}/light/monochromatic.rst (69%) rename {esphomeyaml/components => components}/light/neopixelbus.rst (89%) rename {esphomeyaml/components => components}/light/rgb.rst (71%) rename {esphomeyaml/components => components}/light/rgbw.rst (70%) rename {esphomeyaml/components => components}/light/rgbww.rst (75%) rename {esphomeyaml/components => components}/logger.rst (96%) rename {esphomeyaml/components => components}/mqtt.rst (98%) rename {esphomeyaml/components => components}/my9231.rst (93%) rename {esphomeyaml/components => components}/ota.rst (94%) rename {esphomeyaml/components => components}/output/custom.rst (86%) rename {esphomeyaml/components => components}/output/esp8266_pwm.rst (75%) rename {esphomeyaml/components => components}/output/gpio.rst (65%) rename {esphomeyaml/components => components}/output/images/pca9685-full.jpg (100%) rename {esphomeyaml/components => components}/output/index.rst (83%) rename {esphomeyaml/components => components}/output/ledc.rst (78%) rename {esphomeyaml/components => components}/output/my9231.rst (65%) rename {esphomeyaml/components => components}/output/pca9685.rst (65%) rename {esphomeyaml/components => components}/pca9685.rst (84%) rename {esphomeyaml/components => components}/pcf8574.rst (92%) rename {esphomeyaml/components => components}/pn532.rst (92%) rename {esphomeyaml/components => components}/power_supply.rst (93%) rename {esphomeyaml/components => components}/rdm6300.rst (88%) rename {esphomeyaml/components => components}/remote_receiver.rst (93%) rename {esphomeyaml/components => components}/remote_transmitter.rst (86%) rename {esphomeyaml/components => components}/sensor/adc.rst (94%) rename {esphomeyaml/components => components}/sensor/ads1115.rst (87%) rename {esphomeyaml/components => components}/sensor/apds9960.rst (92%) rename {esphomeyaml/components => components}/sensor/bh1750.rst (91%) rename {esphomeyaml/components => components}/sensor/ble_rssi.rst (79%) rename {esphomeyaml/components => components}/sensor/bme280.rst (95%) rename {esphomeyaml/components => components}/sensor/bme680.rst (96%) rename {esphomeyaml/components => components}/sensor/bmp085.rst (93%) rename {esphomeyaml/components => components}/sensor/bmp280.rst (92%) rename {esphomeyaml/components => components}/sensor/cse7766.rst (91%) rename {esphomeyaml/components => components}/sensor/custom.rst (99%) rename {esphomeyaml/components => components}/sensor/dallas.rst (91%) rename {esphomeyaml/components => components}/sensor/dht.rst (95%) rename {esphomeyaml/components => components}/sensor/dht12.rst (92%) rename {esphomeyaml/components => components}/sensor/duty_cycle.rst (86%) rename {esphomeyaml/components => components}/sensor/esp32_hall.rst (89%) rename {esphomeyaml/components => components}/sensor/hdc1080.rst (93%) rename {esphomeyaml/components => components}/sensor/hlw8012.rst (94%) rename {esphomeyaml/components => components}/sensor/hmc5883l.rst (92%) rename {esphomeyaml/components => components}/sensor/homeassistant.rst (83%) rename {esphomeyaml/components => components}/sensor/htu21d.rst (93%) rename {esphomeyaml/components => components}/sensor/hx711.rst (94%) rename {esphomeyaml/components => components}/sensor/images/adc-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/ads1115-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ads1115-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/apds9960-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bh1750-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bh1750-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/bme280-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bme280-pins.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bme280-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/bme680-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bme680-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/bmp180-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bmp280-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/bmp280-pins.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/custom-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/dallas-log.png (100%) rename {esphomeyaml/components => components}/sensor/images/dallas-wired.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/dht-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/dht12-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/duty_cycle-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/esp32_hall-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/hdc1080-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/htu21d-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/hx711-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ina219-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ina219-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/ina3221-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ina3221-pins.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ina3221-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/max6675-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/mhz19-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/mhz19-pins.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/mpu6050-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/mpu6050-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/ms5611-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ms5611-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/pulse-counter.png (100%) rename {esphomeyaml/components => components}/sensor/images/rotary_encoder-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/rotary_encoder.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/tcs34725-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/tcs34725-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/temperature-humidity.png (100%) rename {esphomeyaml/components => components}/sensor/images/temperature-pressure.png (100%) rename {esphomeyaml/components => components}/sensor/images/temperature.png (100%) rename {esphomeyaml/components => components}/sensor/images/tsl2561-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/tsl2561-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/ultrasonic-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/ultrasonic-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/wifi_signal-ui.png (100%) rename {esphomeyaml/components => components}/sensor/images/xiaomi_mijia-full.jpg (100%) rename {esphomeyaml/components => components}/sensor/images/xiaomi_mijia-ui.png (100%) rename {esphomeyaml/components => components}/sensor/ina219.rst (94%) rename {esphomeyaml/components => components}/sensor/ina3221.rst (94%) rename {esphomeyaml/components => components}/sensor/index.rst (97%) rename {esphomeyaml/components => components}/sensor/max31855.rst (91%) rename {esphomeyaml/components => components}/sensor/max6675.rst (92%) rename {esphomeyaml/components => components}/sensor/mhz19.rst (93%) rename {esphomeyaml/components => components}/sensor/misc/custom-empty.h (100%) rename {esphomeyaml/components => components}/sensor/mpu6050.rst (94%) rename {esphomeyaml/components => components}/sensor/mqtt_subscribe.rst (87%) rename {esphomeyaml/components => components}/sensor/ms5611.rst (93%) rename {esphomeyaml/components => components}/sensor/pmsx003.rst (94%) rename {esphomeyaml/components => components}/sensor/pulse_counter.rst (93%) rename {esphomeyaml/components => components}/sensor/rotary_encoder.rst (91%) rename {esphomeyaml/components => components}/sensor/sht3xd.rst (92%) rename {esphomeyaml/components => components}/sensor/tcs34725.rst (94%) rename {esphomeyaml/components => components}/sensor/template.rst (90%) rename {esphomeyaml/components => components}/sensor/total_daily_energy.rst (89%) rename {esphomeyaml/components => components}/sensor/tsl2561.rst (92%) rename {esphomeyaml/components => components}/sensor/ultrasonic.rst (94%) rename {esphomeyaml/components => components}/sensor/uptime.rst (82%) rename {esphomeyaml/components => components}/sensor/wifi_signal.rst (82%) rename {esphomeyaml/components => components}/sensor/xiaomi_miflora.rst (90%) rename {esphomeyaml/components => components}/sensor/xiaomi_mijia.rst (89%) rename {esphomeyaml/components => components}/spi.rst (92%) rename {esphomeyaml/components => components}/status_led.rst (89%) rename {esphomeyaml/components => components}/stepper/index.rst (97%) rename {esphomeyaml/components => components}/switch/custom.rst (90%) rename {esphomeyaml/components => components}/switch/gpio.rst (89%) rename {esphomeyaml/components => components}/switch/images/gate-remote-ui.png (100%) rename {esphomeyaml/components => components}/switch/images/gpio-ui.png (100%) rename {esphomeyaml/components => components}/switch/images/output-ui.png (100%) rename {esphomeyaml/components => components}/switch/images/remote_transmitter-ui.png (100%) rename {esphomeyaml/components => components}/switch/images/restart-ui.png (100%) rename {esphomeyaml/components => components}/switch/images/rf_receiver-log_raw.png (100%) rename {esphomeyaml/components => components}/switch/images/shutdown-ui.png (100%) rename {esphomeyaml/components => components}/switch/index.rst (93%) rename {esphomeyaml/components => components}/switch/output.rst (82%) rename {esphomeyaml/components => components}/switch/remote_transmitter.rst (95%) rename {esphomeyaml/components => components}/switch/restart.rst (82%) rename {esphomeyaml/components => components}/switch/shutdown.rst (85%) rename {esphomeyaml/components => components}/switch/template.rst (84%) rename {esphomeyaml/components => components}/switch/uart.rst (80%) rename {esphomeyaml/components => components}/text_sensor/custom.rst (90%) rename {esphomeyaml/components => components}/text_sensor/homeassistant.rst (82%) rename {esphomeyaml/components => components}/text_sensor/images/version-ui.png (100%) rename {esphomeyaml/components => components}/text_sensor/index.rst (86%) rename {esphomeyaml/components => components}/text_sensor/mqtt_subscribe.rst (89%) rename {esphomeyaml/components => components}/text_sensor/template.rst (88%) rename {esphomeyaml/components => components}/text_sensor/version.rst (81%) rename {esphomeyaml/components => components}/time.rst (98%) rename {esphomeyaml/components => components}/uart.rst (93%) rename {esphomeyaml/components => components}/web_server.rst (88%) rename {esphomeyaml/components => components}/wifi.rst (97%) rename {esphomeyaml/cookbook => cookbook}/bme280_environment.rst (83%) rename {esphomeyaml/cookbook => cookbook}/bruh.rst (82%) rename {esphomeyaml/cookbook => cookbook}/dual-r2-cover.rst (93%) rename {esphomeyaml/cookbook => cookbook}/garage-door.rst (83%) rename {esphomeyaml/cookbook => cookbook}/images/bme280-header.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/pir-header.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/pir-inside.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/pir-pins.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/pir-ui.png (100%) rename {esphomeyaml/cookbook => cookbook}/images/power_meter-header.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/relay-full.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/sonoff-fishpond-pump-1-programming.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/sonoff-fishpond-pump-and-sensor.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/sonoff-fishpond-pump-gpio14.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/sonoff-fishpond-pump-installed.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/sonoff-fishpond.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/temt6000-header.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/images/temt6000-pins.jpg (100%) rename {esphomeyaml/cookbook => cookbook}/index.rst (100%) rename {esphomeyaml/cookbook => cookbook}/pir.rst (89%) rename {esphomeyaml/cookbook => cookbook}/power_meter.rst (86%) rename {esphomeyaml/cookbook => cookbook}/relay.rst (76%) rename {esphomeyaml/cookbook => cookbook}/sonoff-fishpond-pump.rst (98%) rename {esphomeyaml/cookbook => cookbook}/temt6000.rst (88%) rename {esphomeyaml/custom => custom}/custom_component.rst (93%) rename {esphomeyaml/custom => custom}/i2c.rst (90%) rename {esphomeyaml/custom => custom}/index.rst (100%) rename {esphomeyaml/custom => custom}/spi.rst (88%) rename {esphomeyaml/custom => custom}/uart.rst (91%) rename {esphomeyaml/devices => devices}/esp32.rst (85%) rename {esphomeyaml/devices => devices}/esp8266.rst (98%) rename {esphomeyaml/devices => devices}/images/nodemcu_esp32-full.jpg (100%) rename {esphomeyaml/devices => devices}/images/nodemcu_esp8266-full.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_buttons.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_header.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_mcu.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_result.png (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_top.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_uart.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_4ch_upload.png (100%) rename {esphomeyaml/devices => devices}/images/sonoff_basic-full.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_header.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_parts.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_pcb.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_result.png (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_screws.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_uart.jpg (100%) rename {esphomeyaml/devices => devices}/images/sonoff_s20_upload.png (100%) rename {esphomeyaml/devices => devices}/index.rst (100%) rename {esphomeyaml/devices => devices}/nodemcu_esp32.rst (88%) rename {esphomeyaml/devices => devices}/nodemcu_esp8266.rst (91%) rename {esphomeyaml/devices => devices}/sonoff.rst (82%) rename {esphomeyaml/devices => devices}/sonoff_4ch.rst (98%) rename {esphomeyaml/devices => devices}/sonoff_4ch.yaml (100%) rename {esphomeyaml/devices => devices}/sonoff_basic.rst (98%) rename {esphomeyaml/devices => devices}/sonoff_s20.rst (98%) rename {esphomeyaml/devices => devices}/sonoff_s20.yaml (100%) delete mode 100644 esphomeyaml/components/display/images/max7219/seg00.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg01.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg02.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg05.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg06.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg07.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg08.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg0D.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg0E.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg10.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg15.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg17.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg1C.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg1D.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg1F.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg20.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg22.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg27.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg30.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg31.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg33.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg37.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg3C.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg3D.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg3E.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg3F.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg40.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg47.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg48.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg49.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg4E.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg4F.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg58.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg5B.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg5E.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg5F.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg65.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg67.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg6D.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg6F.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg70.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg73.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg77.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg78.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg79.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg7E.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg7F.svg delete mode 100644 esphomeyaml/components/display/images/max7219/seg80.svg delete mode 100644 esphomeyaml/components/display/images/max7219/segB0.svg delete mode 100644 esphomeyaml/components/display/images/max7219/segFE.svg delete mode 100644 esphomeyaml/images/auto-fix.svg delete mode 100644 esphomeyaml/images/bluetooth.svg delete mode 100644 esphomeyaml/images/brightness-medium.svg delete mode 100644 esphomeyaml/images/bug-report.svg delete mode 100644 esphomeyaml/images/build.svg delete mode 100644 esphomeyaml/images/clock-outline.svg delete mode 100644 esphomeyaml/images/cloud-circle.svg delete mode 100644 esphomeyaml/images/color_lens.svg delete mode 100644 esphomeyaml/images/console.svg delete mode 100644 esphomeyaml/images/creation.svg delete mode 100644 esphomeyaml/images/cse7766.svg delete mode 100644 esphomeyaml/images/description.svg delete mode 100644 esphomeyaml/images/download.svg delete mode 100644 esphomeyaml/images/esp32.svg delete mode 100644 esphomeyaml/images/esp8266.svg delete mode 100644 esphomeyaml/images/espeasy.svg delete mode 100644 esphomeyaml/images/esphomeyaml-logo-full.svg delete mode 100644 esphomeyaml/images/espurna.svg delete mode 100644 esphomeyaml/images/ethernet.svg delete mode 100644 esphomeyaml/images/fan.svg delete mode 100644 esphomeyaml/images/file-document-box.svg delete mode 100644 esphomeyaml/images/flash.svg delete mode 100644 esphomeyaml/images/folder-open.svg delete mode 100644 esphomeyaml/images/github-circle.svg delete mode 100644 esphomeyaml/images/hlw8012.svg delete mode 100644 esphomeyaml/images/home-assistant.svg delete mode 100644 esphomeyaml/images/hotel.svg delete mode 100644 esphomeyaml/images/http.svg delete mode 100644 esphomeyaml/images/i2c.svg delete mode 100644 esphomeyaml/images/language-cpp.svg delete mode 100644 esphomeyaml/images/led-on.svg delete mode 100644 esphomeyaml/images/lightbulb.svg delete mode 100644 esphomeyaml/images/logo-full.svg delete mode 100644 esphomeyaml/images/logo.svg delete mode 100644 esphomeyaml/images/magnet.svg delete mode 100644 esphomeyaml/images/my9231.svg delete mode 100644 esphomeyaml/images/network-wifi.svg delete mode 100644 esphomeyaml/images/new-box.svg delete mode 100644 esphomeyaml/images/percent.svg delete mode 100644 esphomeyaml/images/pin.svg delete mode 100644 esphomeyaml/images/pmsx003.svg delete mode 100644 esphomeyaml/images/power.svg delete mode 100644 esphomeyaml/images/power_settings.svg delete mode 100644 esphomeyaml/images/pulse.svg delete mode 100644 esphomeyaml/images/puzzle.svg delete mode 100644 esphomeyaml/images/question_answer.svg delete mode 100644 esphomeyaml/images/remote.svg delete mode 100644 esphomeyaml/images/restart.svg delete mode 100644 esphomeyaml/images/server-network.svg delete mode 100644 esphomeyaml/images/settings.svg delete mode 100644 esphomeyaml/images/sigma.svg delete mode 100644 esphomeyaml/images/sonoff.svg delete mode 100644 esphomeyaml/images/spi.svg delete mode 100644 esphomeyaml/images/stepper.svg delete mode 100644 esphomeyaml/images/system-update.svg delete mode 100644 esphomeyaml/images/tasmota.svg delete mode 100644 esphomeyaml/images/timer.svg delete mode 100644 esphomeyaml/images/touch.svg delete mode 100644 esphomeyaml/images/uart.svg delete mode 100644 esphomeyaml/images/upload.svg delete mode 100644 esphomeyaml/images/window-open.svg delete mode 100644 esphomeyaml/index.rst delete mode 100644 githubpages.py rename {esphomeyaml/guides => guides}/automations.rst (98%) rename {esphomeyaml/guides => guides}/changelog.rst (100%) rename {esphomeyaml/guides => guides}/cli.rst (100%) rename {esphomeyaml/guides => guides}/configuration-types.rst (96%) rename {esphomeyaml/guides => guides}/contributing.rst (93%) rename {esphomeyaml/guides => guides}/faq.rst (97%) rename {esphomeyaml/guides => guides}/getting_started_command_line.rst (94%) rename {esphomeyaml/guides => guides}/getting_started_hassio.rst (93%) rename {esphomeyaml/guides => guides}/images/dashboard.png (100%) rename {esphomeyaml/guides => guides}/images/download_binary.png (100%) rename {esphomeyaml/guides => guides}/images/espeasy_ota.png (100%) rename {esphomeyaml/guides => guides}/images/esphomeflasher-ui.png (100%) rename {esphomeyaml/guides => guides}/images/espurna_ota.png (100%) rename {esphomeyaml/guides => guides}/images/espurna_upload.png (100%) rename {esphomeyaml/guides => guides}/images/hassio_addon.png (100%) rename {esphomeyaml/guides => guides}/images/hassio_interface.png (100%) rename {esphomeyaml/guides => guides}/images/hassio_repo.png (100%) rename {esphomeyaml/guides => guides}/images/hassio_start.png (100%) rename {esphomeyaml/guides => guides}/images/tasmota_main.png (100%) rename {esphomeyaml/guides => guides}/images/tasmota_ota.png (100%) rename {esphomeyaml/guides => guides}/images/tasmota_upload.png (100%) rename {esphomeyaml/guides => guides}/index.rst (100%) rename {esphomeyaml/guides => guides}/migrate_espeasy.rst (81%) rename {esphomeyaml/guides => guides}/migrate_espurna.rst (82%) rename {esphomeyaml/guides => guides}/migrate_sonoff_tasmota.rst (80%) rename {esphomeyaml/images => images}/ads1115.jpg (100%) rename {esphomeyaml/images => images}/apds9960.jpg (100%) create mode 100644 images/auto-fix.svg rename {esphomeyaml/images => images}/bh1750.jpg (100%) create mode 100644 images/bluetooth.svg rename {esphomeyaml/images => images}/bme280.jpg (100%) rename {esphomeyaml/images => images}/bme680.jpg (100%) rename {esphomeyaml/images => images}/bmp180.jpg (100%) rename {esphomeyaml/images => images}/bmp280.jpg (100%) create mode 100644 images/brightness-medium.svg rename {esphomeyaml/images => images}/bruh.png (100%) create mode 100644 images/bug-report.svg create mode 100644 images/build.svg create mode 100644 images/clock-outline.svg create mode 100644 images/cloud-circle.svg create mode 100644 images/color_lens.svg create mode 100644 images/console.svg rename {esphomeyaml/images => images}/cookbook-sonoff-fishpond-pump.jpg (100%) create mode 100644 images/creation.svg create mode 100644 images/cse7766.svg rename {esphomeyaml/images => images}/dallas.jpg (100%) create mode 100644 images/description.svg rename {esphomeyaml/images => images}/dht.jpg (100%) rename {esphomeyaml/images => images}/dht12.jpg (100%) create mode 100644 images/download.svg create mode 100644 images/esp32.svg create mode 100644 images/esp8266.svg create mode 100644 images/espeasy.svg create mode 100644 images/espurna.svg create mode 100644 images/ethernet.svg create mode 100644 images/fan.svg create mode 100644 images/file-document-box.svg create mode 100644 images/flash.svg create mode 100644 images/folder-open.svg create mode 100644 images/github-circle.svg rename {esphomeyaml/images => images}/hdc1080.jpg (100%) create mode 100644 images/hlw8012.svg rename {esphomeyaml/images => images}/hmc5883l.jpg (100%) create mode 100644 images/home-assistant.svg create mode 100644 images/hotel.svg create mode 100644 images/http.svg rename {esphomeyaml/images => images}/htu21d.jpg (100%) rename {esphomeyaml/images => images}/hx711.jpg (100%) create mode 100644 images/i2c.svg rename {esphomeyaml/images => images}/ina219.jpg (100%) rename {esphomeyaml/images => images}/ina3221.jpg (100%) create mode 100644 images/language-cpp.svg rename {esphomeyaml/images => images}/lcd.jpg (100%) create mode 100644 images/led-on.svg create mode 100644 images/lightbulb.svg create mode 100644 images/logo-core.svg create mode 100644 images/logo-docs.svg create mode 100644 images/logo-flasher.svg create mode 100644 images/logo-release.svg create mode 100644 images/logo-text.svg create mode 100644 images/logo.svg create mode 100644 images/logo.svg.png create mode 100644 images/magnet.svg rename {esphomeyaml/images => images}/max31855.jpg (100%) rename {esphomeyaml/images => images}/max6675.jpg (100%) rename {esphomeyaml/images => images}/max7219.jpg (100%) rename {esphomeyaml/images => images}/mhz19.jpg (100%) rename {esphomeyaml/images => images}/mpu6050.jpg (100%) rename {esphomeyaml/images => images}/mqtt.png (100%) rename {esphomeyaml/images => images}/ms5611.jpg (100%) create mode 100644 images/my9231.svg create mode 100644 images/network-wifi.svg create mode 100644 images/new-box.svg rename {esphomeyaml/images => images}/nextion.jpg (100%) rename {esphomeyaml/images => images}/nodemcu_esp32.jpg (100%) rename {esphomeyaml/images => images}/nodemcu_esp8266.jpg (100%) rename {esphomeyaml/images => images}/pca9685.jpg (100%) rename {esphomeyaml/images => images}/pcf8574.jpg (100%) create mode 100644 images/percent.svg create mode 100644 images/pin.svg rename {esphomeyaml/images => images}/pir.jpg (100%) create mode 100644 images/pmsx003.svg rename {esphomeyaml/images => images}/pn532.jpg (100%) create mode 100644 images/power.svg rename {esphomeyaml/images => images}/power_meter.jpg (100%) create mode 100644 images/power_settings.svg create mode 100644 images/pulse.svg create mode 100644 images/puzzle.svg rename {esphomeyaml/images => images}/pwm.png (100%) create mode 100644 images/question_answer.svg rename {esphomeyaml/images => images}/rdm6300.jpg (100%) rename {esphomeyaml/images => images}/relay.jpg (100%) create mode 100644 images/remote.svg create mode 100644 images/restart.svg rename {esphomeyaml/images => images}/rgb.png (100%) rename {esphomeyaml/images => images}/rgbw.png (100%) rename {esphomeyaml/images => images}/rotary_encoder.jpg (100%) create mode 100644 images/server-network.svg create mode 100644 images/settings.svg rename {esphomeyaml/images => images}/sht3xd.jpg (100%) create mode 100644 images/sigma.svg create mode 100644 images/sonoff.svg rename {esphomeyaml/images => images}/sonoff_4ch.jpg (100%) rename {esphomeyaml/images => images}/sonoff_basic.jpg (100%) rename {esphomeyaml/images => images}/sonoff_dual_r2.jpg (100%) rename {esphomeyaml/images => images}/sonoff_s20.jpg (100%) create mode 100644 images/spi.svg rename {esphomeyaml/images => images}/ssd1306.jpg (100%) create mode 100644 images/stepper.svg create mode 100644 images/system-update.svg create mode 100644 images/tasmota.svg rename {esphomeyaml/images => images}/tcs34725.jpg (100%) rename {esphomeyaml/images => images}/temt6000.jpg (100%) create mode 100644 images/timer.svg create mode 100644 images/touch.svg rename {esphomeyaml/images => images}/tsl2561.jpg (100%) create mode 100644 images/uart.svg rename {esphomeyaml/images => images}/ultrasonic.jpg (100%) create mode 100644 images/upload.svg rename {esphomeyaml/images => images}/waveshare_epaper.jpg (100%) create mode 100644 images/window-open.svg rename {esphomeyaml/images => images}/xiaomi_miflora.jpg (100%) rename {esphomeyaml/images => images}/xiaomi_mijia.jpg (100%) create mode 100644 netlify.toml create mode 100644 runtime.txt delete mode 100644 sonoff-generator.py create mode 100644 svg2png/README.md create mode 100644 svg2png/auto-fix.png create mode 100644 svg2png/bluetooth.png create mode 100644 svg2png/brightness-medium.png create mode 100644 svg2png/bug-report.png create mode 100644 svg2png/clock-outline.png create mode 100644 svg2png/cloud-circle.png create mode 100644 svg2png/color_lens.png create mode 100644 svg2png/console.png create mode 100644 svg2png/creation.png create mode 100644 svg2png/cse7766.png create mode 100644 svg2png/description.png create mode 100644 svg2png/download.png create mode 100644 svg2png/esp32.png create mode 100644 svg2png/esp8266.png create mode 100644 svg2png/espeasy.png create mode 100644 svg2png/espurna.png create mode 100644 svg2png/ethernet.png create mode 100644 svg2png/fan.png create mode 100644 svg2png/file-document-box.png create mode 100644 svg2png/flash.png create mode 100644 svg2png/folder-open.png create mode 100644 svg2png/github-circle.png create mode 100644 svg2png/hlw8012.png create mode 100644 svg2png/home-assistant.png create mode 100644 svg2png/hotel.png create mode 100644 svg2png/http.png create mode 100644 svg2png/i2c.png create mode 100644 svg2png/language-cpp.png create mode 100644 svg2png/led-on.png create mode 100644 svg2png/lightbulb.png create mode 100644 svg2png/logo-text.png create mode 100644 svg2png/logo.png create mode 100644 svg2png/magnet.png create mode 100644 svg2png/my9231.png create mode 100644 svg2png/network-wifi.png create mode 100644 svg2png/new-box.png create mode 100644 svg2png/percent.png create mode 100644 svg2png/pin.png create mode 100644 svg2png/pmsx003.png create mode 100644 svg2png/power.png create mode 100644 svg2png/power_settings.png create mode 100644 svg2png/pulse.png create mode 100644 svg2png/question_answer.png create mode 100644 svg2png/remote.png create mode 100644 svg2png/restart.png create mode 100644 svg2png/server-network.png create mode 100644 svg2png/settings.png create mode 100644 svg2png/sigma.png create mode 100644 svg2png/sonoff.png create mode 100644 svg2png/spi.png create mode 100644 svg2png/stepper.png create mode 100644 svg2png/system-update.png create mode 100644 svg2png/tasmota.png create mode 100644 svg2png/timer.png create mode 100644 svg2png/touch.png create mode 100644 svg2png/uart.png create mode 100644 svg2png/upload.png create mode 100644 svg2png/window-open.png diff --git a/.gitignore b/.gitignore index 455196b0d..940ea4400 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ -_doxyxml _build .python-version __pycache__/ *.py[cod] *$py.class -esphomeyaml/.DS_Store diff --git a/Doxygen b/Doxygen index d275ee12a..5b0e58184 100644 --- a/Doxygen +++ b/Doxygen @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "esphomelib" +PROJECT_NAME = "ESPHome" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -76,7 +76,7 @@ CREATE_SUBDIRS = NO # U+3044. # The default value is: NO. -ALLOW_UNICODE_NAMES = NO +ALLOW_UNICODE_NAMES = YES # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this @@ -436,7 +436,7 @@ LOOKUP_CACHE_SIZE = 0 # normally produced when WARNINGS is set to YES. # The default value is: NO. -EXTRACT_ALL = NO +EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. @@ -462,7 +462,7 @@ EXTRACT_STATIC = NO # for Java sources. # The default value is: YES. -EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are @@ -791,7 +791,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = $(ESPHOMELIB_PATH)/src +INPUT = $(ESPHOME_CORE_PATH)/src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -908,7 +908,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = $(ESPHOMELIB_PATH)/examples +EXAMPLE_PATH = $(ESPHOME_CORE_PATH)/examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -997,7 +997,7 @@ USE_MDFILE_AS_MAINPAGE = # also VERBATIM_HEADERS is set to NO. # The default value is: NO. -SOURCE_BROWSER = NO +SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. @@ -1105,7 +1105,7 @@ IGNORE_PREFIX = # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. -GENERATE_HTML = NO +GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of @@ -1113,7 +1113,7 @@ GENERATE_HTML = NO # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = _build/html/api # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -1937,7 +1937,7 @@ MAN_LINKS = NO # captures the structure of the code including all documentation. # The default value is: NO. -GENERATE_XML = YES +GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of diff --git a/Makefile b/Makefile index 9286d428e..249683e4b 100644 --- a/Makefile +++ b/Makefile @@ -1,41 +1,43 @@ -# Minimal makefile for Sphinx documentation -# +ESPHOME_CORE_PATH = ../esphome-core +ESPHOME_CORE_TAG = v1.10.1 -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = esphomelib -SOURCEDIR = . -BUILDDIR = _build -ESPHOMELIB_PATH = ../esphomelib -ESPHOMELIB_TAG = v1.10.1 +.PHONY: html cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png -.PHONY: html cleanhtml doxyg cleandoxyg deploy help webserver Makefile $(ESPHOMELIB_PATH) +html: + sphinx-build -M html . _build $(O) -html: _doxyxml - $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) +cleanhtml: + rm -rf "_build/html/*" -cleanhtml: cleandoxyg - rm -rf "$(BUILDDIR)/html/*" - -doxyg: cleandoxyg _doxyxml - -cleandoxyg: - rm -rf _doxyxml - -_doxyxml: - ESPHOMELIB_PATH=$(ESPHOMELIB_PATH) doxygen Doxygen - -$(ESPHOMELIB_PATH): - @if [ ! -d "$(ESPHOMELIB_PATH)" ]; then \ - git clone --branch $(ESPHOMELIB_TAG) https://github.com/OttoWinter/esphomelib.git $(ESPHOMELIB_PATH); \ - fi - -convertimages: +svg2png: python3 svg2png.py help: - $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + sphinx-build -M help . _build $(O) + +api: + mkdir -p _build/html/api + @if [ ! -d "$(ESPHOME_CORE_PATH)" ]; then \ + git clone --branch $(ESPHOME_CORE_TAG) https://github.com/esphome/esphome-core.git $(ESPHOME_CORE_PATH); \ + fi + ESPHOME_CORE_PATH=$(ESPHOME_CORE_PATH) doxygen Doxygen + +netlify-api: netlify-dependencies + mkdir -p _build/html/api + @if [ ! -d "$(ESPHOME_CORE_PATH)" ]; then \ + git clone --branch $(ESPHOME_CORE_TAG) https://github.com/esphome/esphome-core.git $(ESPHOME_CORE_PATH); \ + fi + ESPHOME_CORE_PATH=$(ESPHOME_CORE_PATH) ../doxybin/doxygen Doxygen + +netlify-dependencies: + mkdir -p ../doxybin + curl -L https://github.com/esphome/esphome-docs/releases/download/v1.10.1/doxygen-1.8.13.xz | xz -d >../doxybin/doxygen + chmod +x ../doxybin/doxygen + +copy-svg2png: + cp svg2png/*.png _build/html/_images/ + +netlify: netlify-dependencies netlify-api html copy-svg2png webserver: html cd "$(BUILDDIR)/html" && python3 -m http.server @@ -43,4 +45,4 @@ webserver: html # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + sphinx-build -M $@ . _build $(O) diff --git a/README.md b/README.md index 10ba7cb1f..1be60c246 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,4 @@ The source for https://esphomelib.com/ -For contributing, please see https://esphomelib.com/esphomeyaml/guides/contributing.html#contributing-to-esphomedocs +For contributing, please see https://esphomelib.com/guides/contributing.html#contributing-to-esphomedocs diff --git a/_static/android-chrome-192x192.png b/_static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9377cd6f865c354b873a1436308ec72034dcea48 GIT binary patch literal 5157 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 literal 0 HcmV?d00001 diff --git a/_static/android-chrome-512x512.png b/_static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3afb64990678bc2e7be53db570055f93f7ed18 GIT binary patch literal 12074 zcmdUVbySqm`{&HijesC9fb^h43(_Fc=>Q@~$AEOhAmONV4KZ{|Ct08ox1xv{{*)*oA`=x71}@3{Z~WDo#wg>6D^0RUbC0Km3603eY9 z0MNN+G{B^=9Ux0}Wd*=}C~BY;TO;sP)l?){1>sZDvQ4<9cmM#rL#hfd^bj+9^S({s z*QxhMLq*%^(m_yjfuKx6LJ$Mojgn>@rc7@fV&Q2lxV!SR9W|1?Dw-SBLj`+9YikW= z>VPXez*8o8H8;gBNd#<5k~{N!Bi$Ok}fW`Cm_}PH#B9E(#&5Z97 zukqOaKTYwB$>;c_tf7prOG7Loav?&yU>Vas2j&7k&e>ha9d4w~69t-92Uvr%+;fLE zH$>2*rKzO(=|rcLKASAK`1vu-a>{v>Y(%%?nKieKU@BS3>Wh827q~SYwo%3{DVV_H zxJJ*sVmi@LTF0kA1UO9TXWkvq;3^NdMZ{jOK<0V-rOvD^!0U$0TdFkKdj=gb8n!}= z2ETFUhGzKw7-&O)o}abD1lxW!#j}ec?JlY((wD_lmt!?7(d>@UK7( zCXp3f$CV-Dq3XGw4OnJz0)(~enQ0%kuSJ9YA*Z!;tt->yv81RMYoDHJ7YsbuqQR`2 zM0OLtb1B|hATU4cVk?dme?S>usg0Km9;mIS9I}JD(W^FDm zWiH{eswCQd?H}@hiZbTPC)MautP;rY^*v=UGA{$eG9CW_F8pCh&xR^mEK@PH)9xl! z%?7<#9#pjYq`xL(fEO*C>$t|HWj#~ZSHa7&d0E{+qn7dD2MZ)W&pAQG-hWAwjCGskZ<4<}=Ut*rgbgc3! z)rYf7Kq5(@EGhl1)Rwq<3@tb1WM8PBql%|R?q(wiM#o8Sbmm32Xr6!i z-fT?8Q`tyKrD73paSv=I%&h7`C*dV+CAQ4c`a`jtHdjw9l)ftco%Q2O%*VNpe;Qt% zWEXxZS%bWFvX?p3VYU}mqhDnv$5Z1~_7z8&qi3Q0^HAq{DCbgQ$!<=Uv+aFS9s=Wl zX!^|1__@>R&(vZieqKhZIYYlYdt)w*!15(#S!zKaCoJ&Eqn%61w|4fNOI{_v(xR+X z*<;E>TE8Ybuj06vJB7ls*4D9GPWtCYRz+P9RUX0qHbMs!V`W7E%dM!Q?ZnaIin{+k zUoqF;!mAkfaUF-?NN@JHqXY5Oz>eJnq5qP~L^OM!Ft4W;1;T`Y$-@E7?aTAK>lw?1 z5vXJxRxi_MZ#t(F-JHt18g`5uT15jV8X0fBg}{iX^6a8}F~`VEL{2-OmD`E&?_bs; zAd0E%Zb`?1KlrzVkwSS2l0pt$uq5Ix_cKR^^~V!YmC*BYVZ(1frI+9(jJD|O>2fvVDDFNljln3P=*5^yC_Ku6zBfuJ zR2IwYD4qhPBjjFvG09>-h3Y|CjQ#OJ)iq-mZIt>5*j)bj<5;?gu|+HrhULt2_L%P(^1?wgxOUqxzGKr4Z75uRSj*2 zH3%+X;yW1-E}fvPxw{X^rnFM;b4C(?d#-jNe5{t1=x@4QTQX%SUOy5!h1HPdPvExg zIOKg2dNcZl`sK0tN7Fc_S_SGNX97c-QB+KP)j=n>drC#-bBTgDXy7`InHCH1=Hi3x z3@H7z10he|3;NZ@e6KY1F(u(Q4*J4QADwg~cSqA_g2Q3p!yi=@b#D!Arahc&p29C{ z$19Ad)zEmNd9<8)vl)u3b@V15&)YXdMEhyS`&MifFDE-7uU01WHSUXH8NbW%M5_%A z`yL&<^gt4I;&?AFuW?a|AT#%@yg&2SDmw<>F34E<75JpTBOgXE&*PlgSRKEkRh({@ zfwxw!pM~+(rtfOZ@=Eq45P1M75WiB^`>k@t+G(f1?b#Svpr+g#e+`ypR^*jfC~qr2 zV-e$U;-gla?v`=*5SDk79Wdang`zSqvEB^93NX~vE!n{8da8AX#W7ggzJD)d1Eyd0 z(lWX^1}z?9J18YN+~Qa})qWNx{cdvFt|q`cdj7ZGGlCR3HB4{sYLxIm<=CF8FbOYJ z+O))ViDrzMHrPQ%Tj%Aq!g0#qfmE05vT84w{;cv3G;KlDk>K_u6Ix~d-X}z}Mtiy; z1j3@hG6ssG(9It3Un1!h*`OEwBQr_4P9!NEz~Au6O-hyLWbU*=qnv-Hs{x`tb3M?1 zWt#MCJcYuaTe{ED$Uc21SIY4|MPyQ7A#4Lc9fAX%%#XgGnjC>a+f1PbO5!Qk+p0{`a%kbZ=R&+KA*|(ArU^PpB$ZT{*VRKY3YD!7 zRTm>|r@Xyi${WfHUu)=F-cg_dT%-iMn5#9S$7goJPmRp2@M<~-__VbF>D%PEN(6vx zO@~3Vp)hyvtBa-rXW(~=CNWdI>{m&Vza7<`pp1;`>b)>f6!&!T7bw5ROjaQupLV#8 zXr(r{GLc|bp`^klPHB!t-`b5IJxnH*8BR7E9j?PB0Z2hW^Q_-|Qz%NAw(G4#0#?a4 za>qVW2N8fXC*b7OytJavkSd)6G3p1REY_#il?qjZCGj-tWHz)MN<_S6!=|YV<1qy? zK(Kb(_}uf|-}JD7K5uJxG;x=pRo@B@iw1*mKzocxrMnt>_=)#BooGcbS??7okiXOq z=t0Detau-nB%~h7+65cut{mbD;BT>D5vX*xL}LcBYMRIT-6_QffoR{EW#lcggYmt8 z?1Q$bRq=z+{7D@1p^)bX3;)=lRjU{^F#I%HEtf(40oq&vnw$_5EiO z{9cfe^6TW3u@+mv3+2@5rsvI2$vAdSq_OJd-BOVsG0^T}1gL>NpBPhR7d4%)^nsl@bEhxH#epEs=`&jv!Lb^9CkZ*Ra4y5RQZzz z&b7q4pm&pChL)f2z6CgUv4}s>u;5p5234jAZTN6*a0KA*{;GQWRVA?7lQ!YF+WGm0 z8UBF!T?Sp;A2uddVJa@(Bm4oTf88;F?x?Qk?=hBKwgV~Pu1}}^k8Fg!iG_llR8?(W z4N47(M&gX-j!&YJ^{qlc^~bWbQ@2Nxt-IeOi4) zxG+Y!F%&=qfNfa*&HHM@r?OtDEKs{G+xefJJn_6k(%uBO!?C$f?@~$vKXnJ!I)ef zuY~MEDBqrLML(55{KL*tCncL`kw{CsMfHE$Hy3ba&VV{c>|Q2DjBi-7V@rzj{FI1t z#6wXJD80sn!s#M3@Nc4s65|Bti3?vjy&x~lpa1i;kNPj&Xaho>>NV1JfSWPg=PqqL zA3E}Ipa@RX-Q*^mxb|EN*c4R}WNpm<>MO|LgyE@3kzizhIzl-IvWQ<@;i$2btGjhL z`#hKS;rP!$@~x+wNJnxMk~n5BrBgIWmBK^FoU^t}Fpo$trC&{lPbj_DGAlfkO&OzC zW9Od$M7h#A2uc3dOX5}x-S(`@j<)`}DuS!!!qDS%_%dqSW*uH`qZAlQK5lXVuiBnc}8Q9?lk4W(rF5Vr%-75Q(1G_ zCy2BQ^~Ind^aZDjd4Q}AGD|I~!$M=T)mQMLnp*s*GPyEle|I49_MNX9KvgP=|A_X9 zggRTm=3${LK-<;B>7hKuXH{ubY^QN|6#AQ0_-WcQBCJztdS@Q6H_v6%78Rv@7Z5Q8}I)=MFzj#@Rjt4cHbp|3Lfhiof0+v#>k6<6VgRY6v*= zO@JaK7Pv03QHEqb9|>eyUue+lGBOLrJb~dc0Zq%F?@Z^_&}c5tOI) z_xw8ITMb;#kNl0Jnjk%g3C)DbtqOn{m@t)2Cy?q_m-q)kZOI&qIZ~pnF!a+Jeb~j} zyg9RG2sca0I+p<=g1~K?;-nPqM}X{2#%gtOZpzT*BMWk_VIt7q2ujq`I?>C{mQ$1| zHvkozcPToyk_oV)YZ)~4FJuYcY1wLdEG;9<9{gYlHt0q2J{=$>@4YGi74~ypjTIo% z!)q)9jKSleB{E^+FhL)fk6tI;FmIr?@BXZdd=rvB(RX4SC1}o@kTWJEk}z^==8%I1`I z*k;O!2CSFjS{dY@-v3Ic<9Vmpb&d#FBeWCM)s1&d>8`k5et^mzL77j=dSdepT-B9y=WMBW!>Y zv;qcbK)%(F=)2b=RLccvc%(F$_-JxNsVg(ljSjOjGhDP-b}Y%T>aSlp^hi&R4%qUA zXu}5%37*1&7oX*cO(FrriRnYIw5PQs%8QETl~wLSNK1*4yFM%MWw}JQ4SPDO+ix z`k4|X#O-c3t9&=6XA6uuQ8A*UI6WXqI%@mNc7a z$BKrbt5|}!=q;fyW2+xtgbmI6GZs>EV0ZfMlX8!^@0+op*K=Jgnzv@bNxAT_q+956 zJaf$5YoN@g`+KLVP`H$8QE-3MGOg&!-^g7#H)=V(GsSlg)xMYU=Y4qX*>>Q+KzC0v zQFT+BZjfojtLfOR1z_Dd;j{dz>g$48iuieM*7n@beT!e*(o^g(;K(9%LN})CPV1i# z@KIU#?C`lT@OAd_*!;=eZ$)mrylcF7_7i^1nZOIo`Quu=*3mC_s5>Kemu54$xO466 zg4!K`{F3`ZTXA6rMPxrp>#Q2u!M-*2rIiEw2ZYj_hu6v{u?R=nO}jAYBWCdvV4G3H3oTe%U~Jh79A4C#Ji+KeYR2J zV{1P6DWUI^HSb2+!$X4cKtOE^p`5wBb?=3xoY=u#dQkCvantv0 zn52Qclt$i%<$t0;F?pLK-Yn(%;Pl3S-s;xqcO#_@t*4?u1a4D0UAbcI0s{vtGb^`y z9M^sDW0Bq9B%j*hRH(0bGKzuOUdTH$l`$da;{rEb5gVkyb9*-AXSfUh8lgVyYioJirIR+ zoMY@NjJcyD|GQybF0%C4P zhhl4^u`wjZ9jo1=96({7fQ>%-=dm37E? zrTet4{3Y?5*~7Im9$rZC?O8rX1*P`pP;$$ zd0yHzh=836ccEsg;2vx>sC5Vm?pK2>V#Wj&g+>nZe;!Nk_3Pj`$SPs6B z1oXboquL5kZ%cWcra(Lcu)MvJQwBiAYfr=YZoN9dSY8nk>2I$uH2(>1{eL(@ZozP z6i-xY$?lH-o6!3paGdV0j7QKT4}@X+Q&wh=qtH_rAv?J1j)&g#4UWy`9<+CU) z?E0UyzLIQ$?qeyM;&u!h5f;62XI+EDnIoQ#zmSX5|Hlqg$Yhb?+8lilAWF0OEJsE1 z{h}Z^q}#!l&TnIa?Bzz@Dia&o`*}{Lu4gTSMkjoQVb8XmKw-NjjyBV60l0`6>-TH(NeMi6opT1X9j!I6O0>m`1GedMN}N9pC72_Zk&Cv`e>P1 zD@O|L(?ewk3nY5HSl`VMIM8hv{v520PxDtpW`5W;W9YX=@0V+FP}aKW9q33=jV(CQ z40IvWI^cEl&%H_gOAoTgg{_55AYK=e^;5Ii?}(j zFWBn)_<@gn7m6n*9|G8Xv+xdCYp-$fuw6*DOAY|V1(ogEvwH!35BB@cOf{g6=jCs} z8CKf5iZ1}R?pb_z@s`-HUu&d%ZjQf61oPPyin_X-8L;Fvt7+apwQd+5W2 z)DGSgW5|p`gPuBr!X)n0hnYU+W8P;2@N50V&Gi=;N3cXl1&~52g|IU7WZ-lW zSQ&ao8=HWCvw!lrxK>9tNa;V>l%HRdg)nOVFVdHWH+{Rb|H$XwI|FWE;eH< z%?muFZvLU%7obSN0A*kIN9@L33sCr|Nd+`Z&X+Ib@S~u52cwv$#vtu41<4g(MNA zISbx>ln6;qkXK;bi}C)LzXDt*LY~bbJ;?2UJ-fosv44o+C&{Y9%=mTD<&xGN8G!I2m8xvo}~buvYUN0^;+Hi-XTwUlCG}~3O|tz%Q_e0 zS&RbUTK6Zd`sc}({oKGuG1=}c?DZP0(IPiV#nUDG{EEqDAhC1@kA39!oetu152Qh$ zChqk@Ib}zXFb)`J1|s|zA@M~eE5eWAl>*ipjQAgBA++@~GUiv4hQT>y66im=JlEnn z#tz(|VnEEEjk|>81b5{Fn<%@js6%rig9<2*)d4O8ja$5qc|EcH9;~kxYKgS15I7BR zHj^YX(C{Te+*}c31WgL|{61n;9?}K3zz5;~B!IY5i9Qb$IW+mHk;_v9F2ijMalk*b z^hg3@r7-1KpBIYxFc)nce1vf~-352fr*r|^N#UAtq-z_E0=`jL^2v(|(^4G5kHS-! z?i9f?k`FVKaD3@4g9h%_0k=eAcx`w5L40dLUAUB*cZ-SVXT6kab7Zck%Ms{14nRBi+gn*d#{oYa z1%az!s_SYTq4Ggc307TFIQ;m{kIDM*y!ZMylHg>4kVmTBibQ*CwYm!H5^=Vvv{!P6 zW18obP{|`jso2{S&}x~xSJUGvxWtuJkWVl7fnEmqCdUt?nk5w#xpgV@o)f7Abftf8 z53F4K8nvq9+=e}OvAx4eMba&{wikf(;h zR70-N+S66wnHr#%G+Wk#rPM|UDEg7lIzId<2d=;V@wqW-5!Ju-r)2CB7u;44?Q+#y z>HHPwo+*AaP@G9h_n|eMU+G*$6k}0Wbxq}mSPiG@5UfcmTZO!s`DMrGwPrmB?+qL6 zWax*gS9j$?cyMg!><124xK6DWh5{~b#X$wQv7PMJLAB*U&8dm!T|L8opJb071~P0O zwY&oLY*;*EzIK0nk~&1FTxk_haZWg$&R%4#XWOF}_?u-r#60)cGEX4p>&2+6au0S$ zKmbkX5y!F2dH8iLOlL_9Lxy7CaStiR<+uB4eEoUGBHQiq zTt`Y99Dk->fa495V(o5H{Nnp7GP0x6fVdi~k7_iZ^s9>nX{L&7oOtYO@%6X+ql(-R z$~`m-UHMnqu8;U_7r8|ASDr9y#T?W9gtMc{edSe!pBiAQv|EpYSbyyp{u+MC%V7t!mq|! ze7Kb_trIG6ZM;8OnCck*WYP5zh&Ece$O}{=y_Qd?a1^Yp{hGM0Ts?%k^Aq(EN$M2d z_0Y@>vN;>fhhQHbr`}gb;n9TstzJl#*9H^VuDerY|{LOf~Vy z$d=uw5>f4S3W#wye&4_T_v!zwJNtj<@{Y~$yad%bn`ys^^@H>L$BV9MiAXc*=cIoV zXF}5Y_l^tIZywmG2KW)#l@i-A@--0%(fDAotDfZDo~ggj@Sx^SUJb49tek$8b;U?k zu&|w*2q}UWwRY~;*+bv`3r<=T`w0msz#S&1n3}tAz{#@Mk#3HERF)RxhCxQ7yKjEB zDKWT5;AA;gd?X*uhBVi+-dwF|+pT{&MSW|2b)T9(9dFF&(Bm8^QzrW3$@B3<&hOOF61DXfF?!O^63{)p$%EroTnYiWGrR#6H|Em?@|&0$0^!3~59pq+=7-tvjdP z_sBHc<@pIToacnOf?8Or{f8ZFTi7D@tocT!vW2vpy(G8bpkN3MnDLS&tEOG4il;62xuY4^P617f_^9N}o8xEhLwiH7#80Pt`4{(8^% z{-bs`JLX!%=+eVLOSV#Rr{p;Mio!@Dw(V{rvt)t{?e~+UANvi`JzWe4q9!H3UkI)>l>twvw|&WskZK{&1yTOR<- z}TAY~?6 zd61q=!+GT^lV|jvreN9hYQ#*t!YswG{tFa_zE_KRU|F(?5riKh+Y{7QNYkC~lXa4K zZM+rVqyIqdA^juOZ+3Dus?({m$tV-o(?jal7-oB7qV}t0T)|}8!C|?MEs=F(|8 zg&n`#mh-8Z!;4d<4;-)8w5ZMJ+DNy#H)lDewelF&2hot{Q@d*w3KT5#c94EBv!*(* zah8b(7HHuy+JCIvMgEOErQ1psCe@y0d!Db98ppgYp*GHq+&uAoi>8~&v(f(LAj6F=y>C*!SowBT;^*7}&21@V}w7LnO(V!*0E|mpoeC z(MBJQf-TxfEk)#8W5Wu5|FjFEno$%LF7A@aFi6VgnoMz-TJV1P5*-o1Dt+&Rqt_he#EjROGoz}54eWD($UjXC4!Ks$N8b(7Yoo?K=E%l= z_Orz^3H8iACEb(HD%;OOxxG^DX@(Z8WvgDh8S2mY?ER^}2$wZN$o%UaATWJ18xzFf z;aze&#f*|%C%%qp7LryAE6)mGz`iz@s%im7Y%jetZacEV931OSEJ}M~j&X<7qmBnp zAyYJdsN1=$n11(G6B`0sWy4Nme6Q$Oj^mF9Tqw|=(wWN4J@ab^zoI?o1Tqi1`PNTI zI}PDn)gNxfeCJA(j+{O+nTJl@)nKIBn@S*W;zdWAxQb`ZTX>`Lq-uT9_m7>T7hKZ* zOvy_Qlb7E*1!g?biPxZCJr1f+khEGog#dE}O3)s1XrwTr4slz z8q&1-V&C({ISzg+QD`((Br-UBftsoDM&kUmuZCJHUuxJJ=AdP=?bxyLI5_X_KY-jZ z)B{KAM1ngYch0b8#7iiNQ3a&l@- zITef`Z{m97qxG2niljHsZ_nU4ml%S=j`@;i{8zuk()G{o{g>F8IMd!~$YyT*hR!J8 ze~Y2g9M9BtEP^s0{&hpciT-V_kLCK;v_rbMuxmtr9J+jz7=w+!+e)(6z)xu>Sm+F? zQL46Y5TibPJ9Y1Ielt<-B$2ZbSm{~&Nb3O22lL-bmqkNh(amWOd6mQa+^Mf?Osrfs1f$d< zVe(Ns)5Sk3{xf-f#&7&wBF|&AfW0NFQtAg=WsJ+tRw;#Jzo8@eA*W+l`M>iaciKw3 z(p1Gv59ZCXmS~8uL_~%3X036O?FFf@WK;#3msiO*LO68+hR(d4NP#3h;*5Gj*OIO3 zq!fpBodNk*M(b1=fkuVnfqi-_i^=uz?JKQzvJp6@m`=CzD5Y+9UM2Cn%p<7!bZL#r zUij!}gX~yEpFDP|1@AKefZC%04-WB{Cr=&UzCN)eP5Stt%rzFb{FrRgSE&U`Wio z*ysE8@*wGBg8DR0DO+O^ecpc48Em*m3>6t@yny z=xQt&(tSf7N@3=q?2oUmx;;pG>}jTg6?Z$d2CSbjV!NQW^iOk&VczfuB!)dT8kW>U zhm=nZXcw2i8NsBy!}A>5X+#g96cwM~B~f`*-eyBKFmPiffn<4Xs)hxQ10w9SgnM}a8E4{W;qCgb1R^ISw-9go%xL`I{q!a6|b zyl>P?4KTmHvSD*Hx#wDk;4e#Wnkj_4MMW{X`tYcEgUI8Iq0Z~0cQ3)X-3E^i? z1q3Ao1YU_*O#LqePA=AVHopI70#^96HJ0Gbdp!eB9SfhwuI?^2c8>7Jp1!W|$9Ars zRsaAZWA&Jn&`lo#>C^5XP+ivn;INbMS&>k)Q>!P?;7~tSKt5}?#$m72d)z-Y-qSJA j0q!8^N2=tg@d38!9(W$hizH%~0H`WzDg2Z-|McGgm5ntp literal 0 HcmV?d00001 diff --git a/_static/apple-touch-icon.png b/_static/apple-touch-icon.png index 4eff01ca20694005695105cb5ab1db0f4278fbe3..5dcf52cc65c34119f99e8d98c7033ba26496d0c9 100644 GIT binary patch delta 3658 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%0DMe zEwgE*XOAvQlv#GqsuE7(OV>!sDT@P`@dWrRKP{V@x5nlk`f`d@93J1rp{!6^ehhr% z25pIv#iFyz^vDA4f%oMnM;MM#bE~FP^QJY$ZS~^>TK?3q@VtVKixiLss63m>RJa6j zr{|34tq-=4X1to^Azxa98dminBHidq?;N_A0%b7c#HolS_UKSYiAE@1ovjpiondkr zHq6&Lgib+@+k5^@uOql0Gc*b#31b6H|H-M!1297>*|Izwi>y^T6+dK=W46i~h;)XH zl@bIqpyyeq!&3;Sd$pW)zC=g?MOeFie0@3D<~vz*1=Be{n*pz&9%J8k)!SYR=>~s^ zSE;5q@^b;(Y^^eU5{`4R-FO+5(h$4Qj6307(ITnMK3qmg86AR;rad{u>R4Z$ z7nk&O{HwR??@2BNVGWpn2+_rq_e^nyF0kIFvtf!Q8M3uzz{9f7R!4_&TC?sS1J{ z-sY)K7wmJXm4Ks{NWMbJ#rzV|9Q?5h>TmIX=$4G!eelP1r0W>O;qSZ)$mDSo&Nja~ z@7y5L^E^*+%2f&Sg3+1+uAM{dLLVcpqT7X5#i$i;%sOzOV~>^x%Jbc>M*;oi`~Tbz z8&W}V4?*DU39Q;q?w6(##cF6DqP%k;y#hxSm;Y@ZgYY zpT>?Ki^vl6`^e6~-wJstx4aW-{B$iBn%uNJ4eI;UGP?f4mBu(9gkHjZGEYUvwp1zl z4gWS=x@oY|sHdyRcH!{!RIKb$H>CUC^s?$OhGp7>!?%cps&OLH)@h~@*q$|%*U!Q39-*Bt8xeFzMWTC6iXLE z(?T;B_|G%q7YB|sRot>gwKAH5yC$<kgSLCNb5MIF6lGNwxog+`u- zVYOpk4F0>}IUv^`DTyTFa*bG*PjdY~Y^mfCQ0L}RH6weo^du*_d{j()?5ut4Wo*6d zp8|#mP*_Sp9VjgzB4#KoDFYOd5tinE@<1R#KP>wHAza< + + + + + #dfdfdf + + + diff --git a/_static/favicon-16x16.png b/_static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..5efde4f54ecb71c1b3ef43501fab33e5ccbe3886 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`(q|H0Wn4YijyZ97#L$bT^vI+&bLmq_Kpb@Y29CXZm0396F-~+g*<8mwgfX7 zHM<7*XwFdbJ#pS+ro52H)cOT`ofI-AD+z26kQWwlo?>un?!}&acQyz2^t6fGJgRjq zYWI!%Vhk&kzaP(essDLC(>1fu4T5@ewZ)1~#FU?za#{9rz>m^v_oPbyPW*YYyw|oh z=;x#K{F_(S^q*N{zg(`t{mOh(yZu#G)BOeaWIydJKk|Cdp1qeoD>7VN*MGYATJv_5 z*a`(kXRE~G92xc-nNOdV%#+wz5Pyez`_pwYT@8W_Gxk3FQNI58YwguC8_%hWu}msx zm{Qc|n$W8()RRBgTULNkQ))v7e`SvUnyd(GPKT4fBzEYrFVc-Td!;cYOMKgpbNzGY znNJN1-uGhtrX+(+VG_4&R|q!zeR%lbiQl(!ZZWdH{Q06}S7Emld*i_i@~*+mWh>`A z-0@u6T=n<+&3|IGPUeL=srgR$$i7Uf@lk@GBQr4QRZCnWN>UO_QmvAUQh^kMk%6J5 zu7Q!Rfmw*5nU#@|m9eq5fuWUw!PNQjVJI4M^HVa@DsgLga_BiInS@t`M3e+2mMat# z<)>xlq$-qD7Nja<7L+72FjUNW{E3I7Fib<^l>g~7o=<}qn3cKplDUPIg}o<>FbgZV zG?*MtVOHK8qHy}gl@mwK9FaM~e!9V9ftMb`D{;Y+Pfn&&fmSehy85}Sb4q9e0NGCs A?EnA( literal 0 HcmV?d00001 diff --git a/_static/favicon-32x32.png b/_static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..674b8d307c05fbca708da307f26288bbe4d32287 GIT binary patch literal 1186 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 DM+@@2 literal 15086 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 K5|NE#uke2>FT?o& diff --git a/_static/logo-full.png b/_static/logo-full.png deleted file mode 100644 index 454124f3edfa487ca3b8b7d0ab93abd9fbe1375a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45600 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

;p$@dn-FIj^@{>NM3LQ_Ce6K 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

tK1DxC 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 literal 0 HcmV?d00001 diff --git a/_static/safari-pinned-tab.svg b/_static/safari-pinned-tab.svg new file mode 100644 index 000000000..0c305ab72 --- /dev/null +++ b/_static/safari-pinned-tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/site.webmanifest b/_static/site.webmanifest new file mode 100644 index 000000000..5ceeda435 --- /dev/null +++ b/_static/site.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "ESPHome", + "short_name": "ESPHome", + "icons": [ + { + "src": "/_static/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/_static/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#dfdfdf", + "background_color": "#dfdfdf", + "start_url": "https://esphome.io/", + "display": "standalone" +} diff --git a/_templates/layout.html b/_templates/layout.html index 67f72ca51..a4b3402ba 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -1,12 +1,29 @@ {% extends 'alabaster/layout.html' %} +{%- block extrahead %} + {{ super() }} + + + + + + + + + + + + + +{% endblock %} + {% block footer %}

diff --git a/api/binary_sensor/esp32_touch.rst b/api/binary_sensor/esp32_touch.rst deleted file mode 100644 index 67729fe0c..000000000 --- a/api/binary_sensor/esp32_touch.rst +++ /dev/null @@ -1,31 +0,0 @@ -ESP32 Touch Binary Sensor -========================= - -Example Usage -------------- - -.. code-block:: cpp - - auto *touch = App.make_esp32_touch_component(); - touch->set_setup_mode(true); - touch->set_iir_filter(1000); - App.register_binary_sensor(touch_hub->make_touch_pad("ESP32 Touch Pad 9", TOUCH_PAD_NUM9, 1000)); - -.. cpp:namespace:: nullptr - -See :cpp:func:`Application::make_esp32_touch_component`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: binary_sensor::ESP32TouchComponent - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::ESP32TouchBinarySensor - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/gpio.rst b/api/binary_sensor/gpio.rst deleted file mode 100644 index ff7d3e754..000000000 --- a/api/binary_sensor/gpio.rst +++ /dev/null @@ -1,26 +0,0 @@ -GPIO Binary Sensor -================== - -Example Usage -------------- - -.. code-block:: cpp - - // Basic - App.make_gpio_binary_sensor("Window Open", 36); - // Custom pinMode - App.make_gpio_binary_sensor("Window Open", GPIOInputPin(36, INPUT_PULLUP)); - -.. cpp:namespace:: nullptr - -See :cpp:func:`Application::make_gpio_binary_sensor`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: binary_sensor::GPIOBinarySensorComponent - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/index.rst b/api/binary_sensor/index.rst deleted file mode 100644 index b1a28fab2..000000000 --- a/api/binary_sensor/index.rst +++ /dev/null @@ -1,131 +0,0 @@ -Binary Sensor -============= - -.. cpp:namespace:: binary_sensor - -In esphomelib, every component that exposes a binary state, is a :cpp:class:`BinarySensor`. - -To create your own binary sensor, simply subclass :cpp:class:`BinarySensor` and call -:cpp:func:`BinarySensor::publish_state` to tell the frontend that you have a new state. -Inversion is automatically done for you when publishing state and can be changed by the -user with :cpp:func:`BinarySensor::set_inverted`. - -Supported Binary Sensors ------------------------- - -.. toctree:: - :glob: - - * - -Example Usage -------------- - -.. code-block:: cpp - - // Basic - App.register_binary_sensor(custom_binary_sensor); - // GPIO Binary Sensor - App.make_gpio_binary_sensor("Window Open", 36); - - -.. cpp:namespace:: nullptr - -See :cpp:func:`Application::register_binary_sensor` and :cpp:func:`Application::make_gpio_binary_sensor`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -BinarySensor -************ - -.. doxygenclass:: binary_sensor::BinarySensor - :members: - :protected-members: - :undoc-members: - -MQTTBinarySensorComponent -************************* - -.. doxygenclass:: binary_sensor::MQTTBinarySensorComponent - :members: - :protected-members: - :undoc-members: - -Filters -******* - -.. doxygenclass:: binary_sensor::Filter - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::DelayedOnFilter - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::DelayedOffFilter - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::HeartbeatFilter - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::InvertFilter - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::LambdaFilter - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::UniqueFilter - :members: - :protected-members: - :undoc-members: - -Triggers -******** - -.. doxygenclass:: binary_sensor::PressTrigger - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::ReleaseTrigger - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::ClickTrigger - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::DoubleClickTrigger - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::MultiClickTrigger - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::BinarySensorCondition - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::CustomBinarySensorConstructor - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/pn532.rst b/api/binary_sensor/pn532.rst deleted file mode 100644 index a4537bd0a..000000000 --- a/api/binary_sensor/pn532.rst +++ /dev/null @@ -1,19 +0,0 @@ -PN532 NFC/RFID Controller -========================= - -See :cpp:func:`Application::make_pn532_component`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: binary_sensor::PN532Component - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::PN532BinarySensor - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/rdm6300.rst b/api/binary_sensor/rdm6300.rst deleted file mode 100644 index d340dd869..000000000 --- a/api/binary_sensor/rdm6300.rst +++ /dev/null @@ -1,19 +0,0 @@ -RDM6300 NFC/RFID Controller -=========================== - -See :cpp:func:`Application::make_rdm6300_component`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: binary_sensor::RDM6300Component - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: binary_sensor::RDM6300BinarySensor - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/remote_receiver.rst b/api/binary_sensor/remote_receiver.rst deleted file mode 100644 index 3f98cffaa..000000000 --- a/api/binary_sensor/remote_receiver.rst +++ /dev/null @@ -1,112 +0,0 @@ -Remote Receiver -=============== - -.. cpp:namespace:: nullptr - -See :cpp:func:`Application::make_remote_receiver_component` and -:cpp:func:`Application::register_binary_sensor`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: remote::RemoteReceiverComponent - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RemoteReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RemoteReceiveDumper - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::LGReceiver - :members: - :protected-members: - :undoc-members: -.. doxygenclass:: remote::LGDumper - :members: - :protected-members: - :undoc-members: -.. doxygenfunction:: remote::decode_lg - -.. doxygenclass:: remote::NECReceiver - :members: - :protected-members: - :undoc-members: -.. doxygenclass:: remote::NECDumper - :members: - :protected-members: - :undoc-members: -.. doxygenfunction:: remote::decode_nec - -.. doxygenclass:: remote::PanasonicReceiver - :members: - :protected-members: - :undoc-members: -.. doxygenclass:: remote::PanasonicDumper - :members: - :protected-members: - :undoc-members: -.. doxygenfunction:: remote::decode_panasonic - -.. doxygenclass:: remote::SonyReceiver - :members: - :protected-members: - :undoc-members: -.. doxygenclass:: remote::SonyDumper - :members: - :protected-members: - :undoc-members: -.. doxygenfunction:: remote::decode_sony - -.. doxygenclass:: remote::RawReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RawDumper - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::SamsungReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RCSwitchRawReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RCSwitchTypeAReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RCSwitchTypeBReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RCSwitchTypeCReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RCSwitchTypeDReceiver - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: remote::RCSwitchDumper - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/status.rst b/api/binary_sensor/status.rst deleted file mode 100644 index a121565a9..000000000 --- a/api/binary_sensor/status.rst +++ /dev/null @@ -1,26 +0,0 @@ -Node Status Binary Sensor -========================= - -This binary sensor platform allows you to create a switch that uses the birth and last will -messages by the MQTT client to show an ON/OFF state of the node. - -Example Usage -------------- - -.. code-block:: cpp - - App.make_status_binary_sensor("Livingroom Node Status"); - -.. cpp:namespace:: nullptr - -See :cpp:func:`Application::make_status_binary_sensor`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: binary_sensor::StatusBinarySensor - :members: - :protected-members: - :undoc-members: diff --git a/api/binary_sensor/template.rst b/api/binary_sensor/template.rst deleted file mode 100644 index d84ce409a..000000000 --- a/api/binary_sensor/template.rst +++ /dev/null @@ -1,16 +0,0 @@ -Template Binary Sensor -====================== - -.. cpp:namespace:: nullptr - -See :cpp:func:`Application::make_template_binary_sensor`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: binary_sensor::TemplateBinarySensor - :members: - :protected-members: - :undoc-members: diff --git a/api/core/application.rst b/api/core/application.rst deleted file mode 100644 index 0f5017bd0..000000000 --- a/api/core/application.rst +++ /dev/null @@ -1,38 +0,0 @@ -Application -=========== - -.. cpp:namespace:: nullptr - -The :cpp:class:`Application` class has two objectives: 1. handle all of -your :cpp:class:`Component`\ s and 2. provide helper methods to simplify creating a component. - -.. cpp:namespace:: Application - -In itself, an Application instance doesn't do and store very much. It mostly only keeps track of all Components -(using an internal :cpp:func:`std::vector` containing pointers), so that when the user calls the :cpp:func:`setup` or -:cpp:func:`loop` methods, it can relay those calls to the components. - -In order for the Application to know about your components, each one of them should be registered using the -:cpp:func:`register_component` call. And for subclasses of MQTTComponent, :cpp:func:`register_mqtt_component` -shall be used. - -Apart from the helpers, only one function is really necessary for setting up the Application instance: -:cpp:func:`set_name`. The name provided by this is used throughout the code base to construct various strings -such as MQTT topics or WiFi hostnames. Additionally, some one-time-setup components such as MQTT or WiFi can be -initialized with the `init_` calls. Next, this class provides a bunch of helper methods to create and -register components easily using the `make_` calls. - -Each component can tell the Application with which *priority* it wishes to be called using the `get_loop_priority()` -and `get_setup_priority()` overrides. The Application will then automatically order the components before execution. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -.. doxygenclass:: Application - :members: - :protected-members: - :undoc-members: - -.. doxygenvariable:: App diff --git a/api/core/automation.rst b/api/core/automation.rst deleted file mode 100644 index 9720172c7..000000000 --- a/api/core/automation.rst +++ /dev/null @@ -1,7 +0,0 @@ -Automation -========== - -API Reference -------------- - -.. doxygenfile:: esphomelib/automation.h diff --git a/api/core/component.rst b/api/core/component.rst deleted file mode 100644 index b5090e46e..000000000 --- a/api/core/component.rst +++ /dev/null @@ -1,34 +0,0 @@ -Component -========= - -.. cpp:namespace:: Component - -Every object that should be handled by the Application instance and receive :cpp:func:`setup` and -:cpp:func:`loop` calls must be a subclass of :cpp:class:`Component`. - -API Reference -------------- - -.. cpp:namespace:: nullptr - -Component -********* - -.. doxygenclass:: Component - :members: - :protected-members: - :undoc-members: - -PollingComponent -**************** - -.. doxygenclass:: PollingComponent - :members: - :protected-members: - :undoc-members: - - -Setup Priorities -**************** - -.. doxygennamespace:: setup_priority diff --git a/api/core/controller.rst b/api/core/controller.rst deleted file mode 100644 index 02cca14f2..000000000 --- a/api/core/controller.rst +++ /dev/null @@ -1,23 +0,0 @@ -Controller -========== - -API Reference -------------- - -.. cpp:namespace:: nullptr - -Controller -********** - -.. doxygenclass:: Controller - :members: - :protected-members: - :undoc-members: - -StoringController -***************** - -.. doxygenclass:: StoringController - :members: - :protected-members: - :undoc-members: diff --git a/api/core/deep-sleep.rst b/api/core/deep-sleep.rst deleted file mode 100644 index b4e2ac2ae..000000000 --- a/api/core/deep-sleep.rst +++ /dev/null @@ -1,27 +0,0 @@ -Deep Sleep -========== - -.. cpp:namespace:: DeepSleepComponent - -API Reference -------------- - -.. cpp:namespace:: nullptr - -DeepSleepComponent -****************** - -.. doxygenclass:: DeepSleepComponent - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: EnterDeepSleepAction - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: PreventDeepSleepAction - :members: - :protected-members: - :undoc-members: diff --git a/api/core/helpers.rst b/api/core/helpers.rst deleted file mode 100644 index 7e4b6208d..000000000 --- a/api/core/helpers.rst +++ /dev/null @@ -1,74 +0,0 @@ -Helpers -======= - -esphomelib uses a bunch of helpers to make the library easier to use. - -API Reference -------------- - -helpers.h -********* - -.. doxygenfile:: esphomelib/helpers.h - -util.h -****** - -.. doxygenfile:: esphomelib/uil.h - -optional.h -********** - -.. doxygenfile:: esphomelib/optional.h - -ESPPreferences -************** - -.. doxygenclass:: ESPPreferences - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: ESPPreferenceObject - :members: - :protected-members: - :undoc-members: - -.. doxygenvariable:: global_preferences - -esphal.h -******** - -This header should be used whenever you want to access some `digitalRead`, `digitalWrite`, ... methods. - -.. doxygenclass:: GPIOPin - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: GPIOOutputPin - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: GPIOInputPin - :members: - :protected-members: - :undoc-members: - - -ESPOneWire -********** - -esphomelib has its own implementation of OneWire, because the implementation in the Arduino libraries -seems to have lots of timing issues with the ESP8266/ESP32. That's why ESPOneWire was created. - -.. doxygenclass:: ESPOneWire - :members: - :protected-members: - :undoc-members: - -defines.h -********* - -.. doxygenfile:: esphomelib/defines.h diff --git a/api/core/i2c.rst b/api/core/i2c.rst deleted file mode 100644 index 4983b4ceb..000000000 --- a/api/core/i2c.rst +++ /dev/null @@ -1,20 +0,0 @@ -I2CComponent -============ - -To make i2c devices easier to implement in esphomelib, there's a special I2CComponent implementing -a bunch of i2c helper functions on top of the Arduino Wire library. It is also the preferred way -of using i2c peripherals since it implements timeouts, verbose logs for debugging issues, and -for the ESP32 the ability to have multiple i2c busses in operation at the same time. - -API Reference -------------- - -.. doxygenclass:: I2CComponent - :members: - :protected-members: - :undoc-members: - -.. doxygenclass:: I2CDevice - :members: - :protected-members: - :undoc-members: diff --git a/api/core/index.rst b/api/core/index.rst deleted file mode 100644 index 925f45e8e..000000000 --- a/api/core/index.rst +++ /dev/null @@ -1,23 +0,0 @@ -Core -==== - -.. toctree:: - :maxdepth: 1 - - Application - Component - WiFi - MQTT Client - Over-The-Air Updates - Helpers - Logging Engine - Power Supply - Controller - Web Server - Deep Sleep - I2C - Automation - Time