@mx738: Toni, how did you configure the LAN PoE for that board? Are you able to kindly share?
I just got the non camera version but POE works fine using the above. You canât put in WiFi or an AP/captive portal part when using Ethernet. Havenât had time to add various sensors yet so left the relay in. Just flash it using USB C then plug into POE Ethernet and it shows up to add in HA.
substitutions:
name: ws-poe-s3
friendly_name: ws_poe_s3
device_sampling_time: 30s
esphome:
name: ${name}
friendly_name: ${friendly_name}
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
flash_size: 16MB
psram:
mode: octal
speed: 80MHz
switch:
- platform: gpio
name: ws-poe-32-relay1
id: relay1
pin: GPIO8
restore_mode: ALWAYS_OFF
setup_priority: 800
# Enable logging
logger:
debug:
update_interval: ${device_sampling_time}
# Enable Home Assistant API
api:
encryption:
key: "Api123="
ota:
- platform: esphome
password: "otapw"
#wifi:
# ssid: !secret wifi_ssid
# password: !secret wifi_password
ethernet:
type: W5500
mosi_pin: GPIO11
miso_pin: GPIO12
clk_pin: GPIO13
cs_pin: GPIO14
reset_pin: GPIO9
interrupt_pin: GPIO10
clock_speed: 25MHz
time:
- platform: homeassistant
id: homeassistant_time
button:
- platform: safe_mode
name: Safe Mode Boot
- platform: factory_reset
name: Factory reset
- platform: restart
id: reboot_btn
name: restart
sensor:
#-------------------------------------------------------------------------------
# ESP32 internal sensors
#-------------------------------------------------------------------------------
# Temperature
- platform: internal_temperature
name: Internal Temperature
update_interval: ${device_sampling_time}
- platform: debug
free:
name: Heap free
id: ${friendly_name}_heap_free
block:
name: Heap max block
id: ${friendly_name}_heap_max_block
loop_time:
name: Loop time
id: ${friendly_name}_loop_time
- platform: template
name: Heap free (%)
id: ${friendly_name}_heap_free_percent
unit_of_measurement: '%'
accuracy_decimals: 2
icon: mdi:percent
update_interval: ${device_sampling_time}
entity_category: diagnostic
# 524288 B (SRAM total)
# 327680 B (DRAM usable)
lambda: return ( id(${friendly_name}_heap_free).state * 100 / 327680 );
- platform: template
name: Heap max block (%)
id: ${friendly_name}_heap_max_block_percent
unit_of_measurement: '%'
accuracy_decimals: 2
icon: mdi:percent
update_interval: ${device_sampling_time}
entity_category: diagnostic
# 524288 B (SRAM total)
# 327680 B (DRAM usable)
lambda: return ( id(${friendly_name}_heap_max_block).state * 100 / 327680 );
- platform: uptime
name: "Uptime Sensor"
id: ${friendly_name}_uptime_sensor
update_interval: ${device_sampling_time}
internal: true
on_raw_value:
then:
- text_sensor.template.publish:
id: ${friendly_name}_uptime_human
state: !lambda |-
int seconds = round(id(${friendly_name}_uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
text_sensor:
- platform: ethernet_info
ip_address:
name: "IP Address"
#-------------------------------------------------------------------------------
# Custom Text sensors
#-------------------------------------------------------------------------------
- platform: template
name: Uptime Human Readable
id: ${friendly_name}_uptime_human
icon: mdi:clock-start
web_server:
port: 80
version: 2
include_internal: true
ota: false
# Enable fallback hotspot (captive portal) in case wifi connection fails
#ap:
# ssid: "Ws-Poe-S3 Fallback Hotspot"
# password: "AB6J9ECa7R0F"
#captive_portal:
Thanks to the helpful posts above, the camera finally works quite well and with ethernet the BLE proxy works much much better than via WiFi:
No problem with brightness in esphome 2025.05.
Config with Ethernet, Camera and BLE-Proxy:
#===============================================================================
substitutions:
device_name: you-name-for-your-device
room_friendly_name: Maybe Your Workshop Room
#===============================================================================
esphome:
name: ${device_name}
platformio_options:
board_build.arduino.memory_type: qio_opi
board_build.flash_mode: dio
upload_speed: 921600
monitor_speed: 115200
esp32:
board: esp32-s3-devkitc-1
flash_size: 16MB
framework:
type: esp-idf
sdkconfig_options:
CONFIG_ESP32_S3_BOX_BOARD: "y"
psram:
mode: octal
speed: 80MHz
logger:
api:
encryption:
key: !secret api_encryption_psk
ota:
- platform: esphome
password: !secret ota_password
ethernet:
type: W5500
clk_pin: GPIO13
mosi_pin: GPIO11
miso_pin: GPIO12
cs_pin: GPIO14
interrupt_pin: GPIO10
reset_pin: GPIO9
######################################
### Camera
######################################
esp32_camera:
name: ${room_friendly_name} Camera
external_clock:
pin: GPIO3
frequency: 20MHz
i2c_pins:
sda: GPIO48
scl: GPIO47
data_pins: [GPIO41, GPIO45, GPIO46, GPIO42, GPIO40, GPIO38, GPIO15, GPIO18]
vsync_pin: GPIO1
href_pin: GPIO2
pixel_clock_pin: GPIO39
power_down_pin: GPIO8
resolution: 640x480
jpeg_quality: 10
#resolution: 1280x1024
#jpeg_quality: 30
vertical_flip: false
horizontal_mirror: false
# aec_mode: MANUAL
# aec_value: 1200
# brightness: 2
# wb_mode: HOME
# agc_mode: AUTO
#######################################
### Bluetooth Proxy
#######################################
esp32_ble_tracker:
scan_parameters:
# only use these values on Ethernet not WIFI
interval: 1100ms
window: 1100ms
active: true
bluetooth_proxy:
active: true
I also made an enclosure for the board, if anybody needs one:
Thanks to this thread i made it finally work.
now⌠this thing gets hot? or is it just in my case? (ESP32-S3-ETH, PoE module and also camera)
absolutely ⌠any ESP32 where the camera is in use, gets quite hot in my experience. On top of that, I am sure the POE-module also generates itâs share of heat.
so: yes, thatâs normal