substitutions: friendly_name: Hal esphome: name: hal esp8266: board: nodemcuv2 # Enable logging logger: ota: password: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Hal Fallback Hotspot" password: "XXXXXXXXXXXXXXX" captive_portal: i2c: - id: bus_a text_sensor: - platform: wifi_info ip_address: name: $friendly_name IP Address sensor: - platform: tsl2591 i2c_id: bus_a name: $friendly_name Lux Sensor id: "lux_sensor" address: 0x29 update_interval: 15s device_factor: 53 glass_attenuation_factor: 7.7 visible: name: $friendly_name TSL2591 Visible Light infrared: name: $friendly_name TSL2591 Infrared Light full_spectrum: name: $friendly_name TSL2591 Full Spectrum Light calculated_lux: id: i_lux name: $friendly_name TSL2591 Lux # Send WiFi signal strength & uptime to HA - platform: wifi_signal name: $friendly_name WiFi Strength update_interval: 60s - platform: uptime name: $friendly_name Uptime - platform: adc pin: VCC name: $friendly_name VCC Voltage status_led: pin: number: GPIO2 #D4 inverted: true binary_sensor: # Added to tell whether audio is currently playing - platform: template name: $friendly_name Is Talking lambda: 'return id(hal_df_player).is_playing();' - platform: gpio pin: number: GPIO14 #D5 inverted: true mode: input: true pullup: true name: $friendly_name Button id: button - platform: gpio device_class: motion pin: number: GPIO16 #D0 inverted: false mode: input: true pulldown: true name: $friendly_name Motion Sensor id: motion_sensor uart: tx_pin: GPIO12 #D6 rx_pin: GPIO13 #D7 baud_rate: 9600 dfplayer: id: hal_df_player api: services: - service: dfplayer_next then: - dfplayer.play_next: - service: dfplayer_previous then: - dfplayer.play_previous: - service: dfplayer_play variables: file: int then: - dfplayer.play: !lambda 'return file;' - service: dfplayer_play_loop variables: file: int loop_: bool then: - dfplayer.play: file: !lambda 'return file;' loop: !lambda 'return loop_;' - service: dfplayer_play_folder variables: folder: int file: int then: - dfplayer.play_folder: folder: !lambda 'return folder;' file: !lambda 'return file;' - service: dfplayer_play_loop_folder variables: folder: int then: - dfplayer.play_folder: folder: !lambda 'return folder;' loop: true - service: dfplayer_set_device_tf then: - dfplayer.set_device: TF_CARD - service: dfplayer_set_device_usb then: - dfplayer.set_device: USB - service: dfplayer_set_volume variables: volume: int then: - dfplayer.set_volume: !lambda 'return volume;' - service: dfplayer_set_eq variables: preset: int then: - dfplayer.set_eq: !lambda 'return static_cast(preset);' - service: dfplayer_sleep then: - dfplayer.sleep - service: dfplayer_reset then: - dfplayer.reset - service: dfplayer_start then: - dfplayer.start - service: dfplayer_pause then: - dfplayer.pause - service: dfplayer_stop then: - dfplayer.stop - service: dfplayer_random then: - dfplayer.random - service: dfplayer_volume_up then: - dfplayer.volume_up - service: dfplayer_volume_down then: - dfplayer.volume_down #Added to allow me to call for a random single track to be played from folder 01 - service: dfplayer_random_single_track then: - dfplayer.play_folder: folder: 1 file: !lambda 'return rand() % 36 + 1;'