--- esphome: name: $devicename platform: ESP32 board: nodemcu-32s build_path: build/test4 substitutions: devicename: test-4 ethernet: type: LAN8720 mdc_pin: allow_other_uses: true number: GPIO23 mdio_pin: allow_other_uses: true number: GPIO25 clk_mode: GPIO0_IN phy_addr: 0 power_pin: allow_other_uses: true number: GPIO25 manual_ip: static_ip: 192.168.178.56 gateway: 192.168.178.1 subnet: 255.255.255.0 domain: .local network: enable_ipv6: true mqtt: broker: test.mosquitto.org port: 1883 discovery: true discovery_prefix: homeassistant topic_prefix: api: i2c: sda: allow_other_uses: true number: 21 scl: allow_other_uses: true number: 22 scan: false spi: - id: spi_id_1 clk_pin: allow_other_uses: true number: GPIO21 mosi_pin: allow_other_uses: true number: GPIO22 miso_pin: allow_other_uses: true number: GPIO23 interface: hardware - id: spi_id_2 clk_pin: number: GPIO32 mosi_pin: number: GPIO33 interface: hardware uart: - id: uart115200 tx_pin: allow_other_uses: true number: GPIO22 rx_pin: allow_other_uses: true number: GPIO23 baud_rate: 115200 - id: uart9600 tx_pin: allow_other_uses: true number: GPIO25 rx_pin: allow_other_uses: true number: GPIO26 baud_rate: 9600 - id: uart_he60r tx_pin: number: GPIO18 allow_other_uses: true rx_pin: number: GPIO36 allow_other_uses: true baud_rate: 1200 parity: EVEN ota: safe_mode: true port: 3286 logger: level: DEBUG debug: web_server: ota: false auth: username: admin password: admin include_internal: true time: - platform: sntp id: sntp_time tuya: time_id: sntp_time uart_id: uart115200 status_pin: number: GPIO5 inverted: true allow_other_uses: true select: - platform: tuya id: tuya_select enum_datapoint: 42 options: 0: Internal 1: Floor 2: Both pipsolar: id: inverter0 uart_id: uart115200 pylontech: - id: pylontech0 uart_id: uart115200 - id: pylontech1 uart_id: uart115200 sx1509: - id: sx1509_hub address: 0x3E mcp3204: spi_id: spi_id_1 cs_pin: allow_other_uses: true number: GPIO23 dac7678: address: 0x4A id: dac7678_hub1 internal_reference: true sensor: - platform: pylontech pylontech_id: pylontech0 battery: 1 voltage: id: pyl01_voltage current: id: pyl01_current coulomb: id: pyl01_soc mos_temperature: id: pyl01_mos_temperature - platform: pylontech pylontech_id: pylontech1 battery: 1 voltage: id: pyl13_voltage temperature_low: id: pyl13_temperature_low temperature_high: id: pyl13_temperature_high voltage_low: id: pyl13_voltage_low voltage_high: id: pyl13_voltage_high - platform: homeassistant entity_id: sensor.hello_world id: ha_hello_world - platform: tuya id: tuya_sensor sensor_datapoint: 1 - platform: pipsolar pipsolar_id: inverter0 grid_rating_voltage: id: inverter0_grid_rating_voltage name: inverter0_grid_rating_voltage grid_rating_current: id: inverter0_grid_rating_current name: inverter0_grid_rating_current ac_output_rating_voltage: id: inverter0_ac_output_rating_voltage name: inverter0_ac_output_rating_voltage ac_output_rating_frequency: id: inverter0_ac_output_rating_frequency name: inverter0_ac_output_rating_frequency ac_output_rating_current: id: inverter0_ac_output_rating_current name: inverter0_ac_output_rating_current ac_output_rating_apparent_power: id: inverter0_ac_output_rating_apparent_power name: inverter0_ac_output_rating_apparent_power ac_output_rating_active_power: id: inverter0_ac_output_rating_active_power name: inverter0_ac_output_rating_active_power battery_rating_voltage: id: inverter0_battery_rating_voltage name: inverter0_battery_rating_voltage battery_recharge_voltage: id: inverter0_battery_recharge_voltage name: inverter0_battery_recharge_voltage battery_under_voltage: id: inverter0_battery_under_voltage name: inverter0_battery_under_voltage battery_bulk_voltage: id: inverter0_battery_bulk_voltage name: inverter0_battery_bulk_voltage battery_float_voltage: id: inverter0_battery_float_voltage name: inverter0_battery_float_voltage battery_type: id: inverter0_battery_type name: inverter0_battery_type current_max_ac_charging_current: id: inverter0_current_max_ac_charging_current name: inverter0_current_max_ac_charging_current current_max_charging_current: id: inverter0_current_max_charging_current name: inverter0_current_max_charging_current input_voltage_range: id: inverter0_input_voltage_range name: inverter0_input_voltage_range output_source_priority: id: inverter0_output_source_priority name: inverter0_output_source_priority charger_source_priority: id: inverter0_charger_source_priority name: inverter0_charger_source_priority parallel_max_num: id: inverter0_parallel_max_num name: inverter0_parallel_max_num machine_type: id: inverter0_machine_type name: inverter0_machine_type topology: id: inverter0_topology name: inverter0_topology output_mode: id: inverter0_output_mode name: inverter0_output_mode battery_redischarge_voltage: id: inverter0_battery_redischarge_voltage name: inverter0_battery_redischarge_voltage pv_ok_condition_for_parallel: id: inverter0_pv_ok_condition_for_parallel name: inverter0_pv_ok_condition_for_parallel pv_power_balance: id: inverter0_pv_power_balance name: inverter0_pv_power_balance grid_voltage: id: inverter0_grid_voltage name: inverter0_grid_voltage grid_frequency: id: inverter0_grid_frequency name: inverter0_grid_frequency ac_output_voltage: id: inverter0_ac_output_voltage name: inverter0_ac_output_voltage ac_output_frequency: id: inverter0_ac_output_frequency name: inverter0_ac_output_frequency ac_output_apparent_power: id: inverter0_ac_output_apparent_power name: inverter0_ac_output_apparent_power ac_output_active_power: id: inverter0_ac_output_active_power name: inverter0_ac_output_active_power output_load_percent: id: inverter0_output_load_percent name: inverter0_output_load_percent bus_voltage: id: inverter0_bus_voltage name: inverter0_bus_voltage battery_voltage: id: inverter0_battery_voltage name: inverter0_battery_voltage battery_charging_current: id: inverter0_battery_charging_current name: inverter0_battery_charging_current battery_capacity_percent: id: inverter0_battery_capacity_percent name: inverter0_battery_capacity_percent inverter_heat_sink_temperature: id: inverter0_inverter_heat_sink_temperature name: inverter0_inverter_heat_sink_temperature pv_input_current_for_battery: id: inverter0_pv_input_current_for_battery name: inverter0_pv_input_current_for_battery pv_input_voltage: id: inverter0_pv_input_voltage name: inverter0_pv_input_voltage battery_voltage_scc: id: inverter0_battery_voltage_scc name: inverter0_battery_voltage_scc battery_discharge_current: id: inverter0_battery_discharge_current name: inverter0_battery_discharge_current battery_voltage_offset_for_fans_on: id: inverter0_battery_voltage_offset_for_fans_on name: inverter0_battery_voltage_offset_for_fans_on eeprom_version: id: inverter0_eeprom_version name: inverter0_eeprom_version pv_charging_power: id: inverter0_pv_charging_power name: inverter0_pv_charging_power - platform: hrxl_maxsonar_wr name: Rainwater Tank Level uart_id: uart115200 filters: - sliding_window_moving_average: window_size: 12 send_every: 12 - or: - throttle: 20min - delta: 0.02 - platform: mcp3204 name: MCP3204 Pin 1 number: 1 id: mcp_sensor - platform: copy source_id: mcp_sensor name: MCP binary sensor copy - platform: ufire_ec id: ufire_ec_board temperature: name: Ufire Temperature ec: name: Ufire EC temperature_compensation: 20.0 temperature_coefficient: 0.019 - platform: ufire_ise id: ufire_ise_board temperature: name: Ufire Temperature ph: name: Ufire pH - platform: a01nyub id: a01nyub_sensor name: "a01nyub Distance" uart_id: uart9600 state_topic: "esphome/sensor/a01nyub_sensor/state" # # platform sensor.apds9960 requires component apds9960 # # - platform: apds9960 # type: proximity # name: APDS9960 Proximity # - platform: apds9960 # type: clear # name: APDS9960 Clear # - platform: apds9960 # type: red # name: APDS9960 Red # - platform: apds9960 # type: green # name: APDS9960 Green # - platform: apds9960 # type: blue # name: APDS9960 Blue binary_sensor: - platform: tuya id: tuya_binary_sensor sensor_datapoint: 1 - platform: pipsolar pipsolar_id: inverter0 add_sbu_priority_version: id: inverter0_add_sbu_priority_version name: inverter0_add_sbu_priority_version configuration_status: id: inverter0_configuration_status name: inverter0_configuration_status scc_firmware_version: id: inverter0_scc_firmware_version name: inverter0_scc_firmware_version load_status: id: inverter0_load_status name: inverter0_load_status battery_voltage_to_steady_while_charging: id: inverter0_battery_voltage_to_steady_while_charging name: inverter0_battery_voltage_to_steady_while_charging charging_status: id: inverter0_charging_status name: inverter0_charging_status scc_charging_status: id: inverter0_scc_charging_status name: inverter0_scc_charging_status ac_charging_status: id: inverter0_ac_charging_status name: inverter0_ac_charging_status charging_to_floating_mode: id: inverter0_charging_to_floating_mode name: inverter0_charging_to_floating_mode switch_on: id: inverter0_switch_on name: inverter0_switch_on dustproof_installed: id: inverter0_dustproof_installed name: inverter0_dustproof_installed silence_buzzer_open_buzzer: id: inverter0_silence_buzzer_open_buzzer name: inverter0_silence_buzzer_open_buzzer overload_bypass_function: id: inverter0_overload_bypass_function name: inverter0_overload_bypass_function lcd_escape_to_default: id: inverter0_lcd_escape_to_default name: inverter0_lcd_escape_to_default overload_restart_function: id: inverter0_overload_restart_function name: inverter0_overload_restart_function over_temperature_restart_function: id: inverter0_over_temperature_restart_function name: inverter0_over_temperature_restart_function backlight_on: id: inverter0_backlight_on name: inverter0_backlight_on - platform: template id: ar1 lambda: "return {};" filters: - autorepeat: - delay: 2s time_off: 100ms time_on: 900ms - delay: 4s time_off: 100ms time_on: 400ms on_state: then: - lambda: 'ESP_LOGI("ar1:", "%d", x);' - platform: touchscreen touchscreen_id: xpt_touchscreen id: touch_key0 x_min: 80 x_max: 160 y_min: 106 y_max: 212 on_press: - logger.log: Touched - platform: gpio name: GPIO SX1509 test pin: sx1509: sx1509_hub number: 3 - platform: touchscreen touchscreen_id: lilygo_touchscreen id: touch_key1 x_min: 0 x_max: 100 y_min: 0 y_max: 100 on_press: - logger.log: Touched - platform: gt911 id: touch_key_911 index: 0 - platform: gpio name: MaxIn Pin 4 pin: max6956: max6956_1 number: 4 mode: input: true pullup: true inverted: false - platform: gpio name: XL9535 Pin 0 pin: xl9535: xl9535_hub number: 0 mode: input: true inverted: false - platform: gpio name: XL9535 Pin 17 pin: xl9535: xl9535_hub number: 17 mode: input: true inverted: false climate: - platform: tuya id: tuya_climate switch_datapoint: 1 target_temperature_datapoint: 3 current_temperature_multiplier: 0.5 target_temperature_multiplier: 0.5 reports_fahrenheit: true switch: - platform: tuya id: tuya_switch switch_datapoint: 1 - platform: pipsolar pipsolar_id: inverter0 output_source_priority_utility: name: inverter0_output_source_priority_utility output_source_priority_solar: name: inverter0_output_source_priority_solar output_source_priority_battery: name: inverter0_output_source_priority_battery input_voltage_range: name: inverter0_input_voltage_range pv_ok_condition_for_parallel: name: inverter0_pv_ok_condition_for_parallel pv_power_balance: name: inverter0_pv_power_balance - platform: copy source_id: tuya_switch name: Tuya Switch Copy light: - platform: fastled_clockless id: led_matrix_32x8 name: led_matrix_32x8 chipset: WS2812B pin: allow_other_uses: true number: GPIO15 num_leds: 256 rgb_order: GRB default_transition_length: 0s color_correct: [50%, 50%, 50%] - platform: tuya id: tuya_light switch_datapoint: 1 dimmer_datapoint: 2 min_value_datapoint: 3 color_temperature_datapoint: 4 min_value: 1 max_value: 100 cold_white_color_temperature: 153 mireds warm_white_color_temperature: 500 mireds gamma_correct: 1 cover: - platform: tuya id: tuya_cover position_datapoint: 2 - platform: copy source_id: tuya_cover name: Tuya Cover copy - platform: he60r uart_id: uart_he60r id: garage_door name: Garage Door open_duration: 14s close_duration: 14s display: - platform: addressable_light id: led_matrix_32x8_display addressable_light_id: led_matrix_32x8 width: 32 height: 8 pixel_mapper: |- if (x % 2 == 0) { return (x * 8) + y; } return (x * 8) + (7 - y); lambda: |- Color red = Color(0xFF0000); Color green = Color(0x00FF00); Color blue = Color(0x0000FF); it.rectangle(0, 0, it.get_width(), it.get_height(), red); it.rectangle(1, 1, it.get_width()-2, it.get_height()-2, green); it.rectangle(2, 2, it.get_width()-4, it.get_height()-4, blue); it.rectangle(3, 3, it.get_width()-6, it.get_height()-6, red); rotation: 0° update_interval: 16ms - platform: waveshare_epaper spi_id: spi_id_1 cs_pin: allow_other_uses: true number: GPIO23 dc_pin: allow_other_uses: true number: GPIO23 busy_pin: allow_other_uses: true number: GPIO23 reset_pin: allow_other_uses: true number: GPIO23 model: 2.13in-ttgo-b1 full_update_every: 30 lambda: |- it.rectangle(0, 0, it.get_width(), it.get_height()); - platform: waveshare_epaper spi_id: spi_id_1 cs_pin: allow_other_uses: true number: GPIO23 dc_pin: allow_other_uses: true number: GPIO23 busy_pin: allow_other_uses: true number: GPIO23 reset_pin: allow_other_uses: true number: GPIO23 model: 2.90in full_update_every: 30 reset_duration: 200ms lambda: |- it.rectangle(0, 0, it.get_width(), it.get_height()); - platform: waveshare_epaper spi_id: spi_id_1 cs_pin: allow_other_uses: true number: GPIO23 dc_pin: allow_other_uses: true number: GPIO23 busy_pin: allow_other_uses: true number: GPIO23 reset_pin: allow_other_uses: true number: GPIO23 model: 2.90inv2 full_update_every: 30 lambda: |- it.rectangle(0, 0, it.get_width(), it.get_height()); - platform: waveshare_epaper spi_id: spi_id_1 cs_pin: allow_other_uses: true number: GPIO23 dc_pin: allow_other_uses: true number: GPIO23 busy_pin: allow_other_uses: true number: GPIO23 reset_pin: allow_other_uses: true number: GPIO23 model: 1.54in-m5coreink-m09 lambda: |- it.rectangle(0, 0, it.get_width(), it.get_height()); - platform: inkplate6 id: inkplate_display greyscale: false partial_updating: false update_interval: 60s display_data_1_pin: number: 5 allow_other_uses: true display_data_2_pin: number: 18 allow_other_uses: true display_data_3_pin: number: 19 allow_other_uses: true display_data_5_pin: number: 25 allow_other_uses: true display_data_4_pin: number: 23 allow_other_uses: true display_data_6_pin: number: 26 allow_other_uses: true display_data_7_pin: number: 27 allow_other_uses: true ckv_pin: allow_other_uses: true number: GPIO1 sph_pin: allow_other_uses: true number: GPIO1 gmod_pin: allow_other_uses: true number: GPIO1 gpio0_enable_pin: allow_other_uses: true number: GPIO1 oe_pin: allow_other_uses: true number: GPIO1 spv_pin: allow_other_uses: true number: GPIO1 powerup_pin: allow_other_uses: true number: GPIO1 wakeup_pin: allow_other_uses: true number: GPIO1 vcom_pin: allow_other_uses: true number: GPIO1 number: - platform: tuya id: tuya_number number_datapoint: 102 min_value: 0 max_value: 17 step: 1 - platform: copy source_id: tuya_number name: Tuya Number Copy text_sensor: - platform: pylontech pylontech_id: pylontech0 battery: 1 base_state: id: pyl0_base_state voltage_state: id: pyl0_voltage_state current_state: id: pyl0_current_state temperature_state: id: pyl0_temperature_state - platform: pipsolar pipsolar_id: inverter0 device_mode: id: inverter0_device_mode name: inverter0_device_mode last_qpigs: id: inverter0_last_qpigs name: inverter0_last_qpigs last_qpiri: id: inverter0_last_qpiri name: inverter0_last_qpiri last_qmod: id: inverter0_last_qmod name: inverter0_last_qmod last_qflag: id: inverter0_last_qflag name: inverter0_last_qflag - platform: copy source_id: inverter0_device_mode name: Inverter Text Sensor Copy - platform: ethernet_info ip_address: name: IP Address output: - platform: pipsolar pipsolar_id: inverter0 battery_recharge_voltage: id: inverter0_battery_recharge_voltage_out - platform: dac7678 dac7678_id: dac7678_hub1 channel: 0 id: dac7678_1_ch0 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 1 id: dac7678_1_ch1 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 2 id: dac7678_1_ch2 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 3 id: dac7678_1_ch3 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 4 id: dac7678_1_ch4 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 5 id: dac7678_1_ch5 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 6 id: dac7678_1_ch6 - platform: dac7678 dac7678_id: dac7678_hub1 channel: 7 id: dac7678_1_ch7 esp32_camera: name: ESP-32 Camera data_pins: - number: GPIO17 allow_other_uses: true - number: GPIO35 allow_other_uses: true - number: GPIO34 - number: GPIO5 allow_other_uses: true - number: GPIO39 - number: GPIO18 allow_other_uses: true - number: GPIO36 allow_other_uses: true - number: GPIO19 allow_other_uses: true vsync_pin: allow_other_uses: true number: GPIO22 href_pin: allow_other_uses: true number: GPIO26 pixel_clock_pin: allow_other_uses: true number: GPIO21 external_clock: pin: allow_other_uses: true number: GPIO27 frequency: 20MHz i2c_pins: sda: allow_other_uses: true number: GPIO25 scl: allow_other_uses: true number: GPIO23 reset_pin: allow_other_uses: true number: GPIO15 power_down_pin: allow_other_uses: true number: GPIO1 resolution: 640x480 jpeg_quality: 10 on_image: then: - lambda: |- ESP_LOGD("main", "image len=%d, data=%c", image.length, image.data[0]); esp32_camera_web_server: - port: 8080 mode: stream - port: 8081 mode: snapshot external_components: - source: github://esphome/esphome@dev refresh: 1d components: [bh1750] - source: ../esphome/components components: [sntp] button: - platform: restart name: Restart Button - platform: safe_mode name: Safe Mode Button - platform: shutdown name: Shutdown Button id: shutdown_btn - platform: copy source_id: shutdown_btn name: Shutdown Button Copy touchscreen: - platform: ektf2232 interrupt_pin: allow_other_uses: true number: GPIO36 rts_pin: allow_other_uses: true number: GPIO5 display: inkplate_display on_touch: - logger.log: format: Touch at (%d, %d) args: [touch.x, touch.y] - platform: xpt2046 id: xpt_touchscreen spi_id: spi_id_2 cs_pin: allow_other_uses: true number: 17 interrupt_pin: number: 16 display: inkplate_display update_interval: 50ms report_interval: 1s threshold: 400 calibration_x_min: 3860 calibration_x_max: 280 calibration_y_min: 340 calibration_y_max: 3860 swap_x_y: false on_touch: - logger.log: format: Touch at (%d, %d) args: [touch.x, touch.y] - platform: lilygo_t5_47 id: lilygo_touchscreen interrupt_pin: allow_other_uses: true number: GPIO36 display: inkplate_display on_touch: - logger.log: format: Touch at (%d, %d) args: [touch.x, touch.y] - platform: gt911 interrupt_pin: GPIO3 display: inkplate_display i2s_audio: i2s_lrclk_pin: allow_other_uses: true number: GPIO26 i2s_bclk_pin: allow_other_uses: true number: GPIO27 i2s_mclk_pin: allow_other_uses: true number: GPIO25 media_player: - platform: i2s_audio name: None dac_type: external i2s_dout_pin: allow_other_uses: true number: GPIO25 mute_pin: number: GPIO14 on_state: - media_player.play: - media_player.play_media: http://localhost/media.mp3 - media_player.play_media: !lambda 'return "http://localhost/media.mp3";' on_idle: - media_player.pause: on_play: - media_player.stop: on_pause: - media_player.toggle: - wait_until: media_player.is_idle: - wait_until: media_player.is_playing: - media_player.volume_up: - media_player.volume_down: - media_player.volume_set: 50% prometheus: include_internal: true relabel: ha_hello_world: id: hellow_world name: Hello World microphone: - platform: i2s_audio id: mic_id_adc adc_pin: allow_other_uses: true number: GPIO35 adc_type: internal - platform: i2s_audio id: mic_id_external i2s_din_pin: allow_other_uses: true number: GPIO23 adc_type: external pdm: false speaker: - platform: i2s_audio id: speaker_id dac_type: external i2s_dout_pin: allow_other_uses: true number: GPIO25 mode: mono voice_assistant: microphone: mic_id_external speaker: speaker_id on_listening: - logger.log: "Voice assistant microphone listening" on_start: - logger.log: "Voice assistant started" on_stt_end: - logger.log: format: "Voice assistant STT ended with result %s" args: [x.c_str()] on_tts_start: - logger.log: format: "Voice assistant TTS started with text %s" args: [x.c_str()] on_tts_end: - logger.log: format: "Voice assistant TTS ended with url %s" args: [x.c_str()] on_end: - logger.log: "Voice assistant ended" on_error: - logger.log: format: "Voice assistant error - code %s, message: %s" args: [code.c_str(), message.c_str()] max6956: - id: max6956_1 address: 0x40 xl9535: - id: xl9535_hub address: 0x20