03-17-2026, 12:50 AM
Code:
esphome:
name: dm32
friendly_name: dm32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
ethernet:
type: W5500
clk_pin: GPIO1
mosi_pin: GPIO2
miso_pin: GPIO41
cs_pin: GPIO42
interrupt_pin: GPIO43
reset_pin: GPIO44
uart:
- id: uart_1 # RS485
baud_rate: 9600
debug:
direction: BOTH
dummy_receiver: true
after:
timeout: 10ms
tx_pin: 39
rx_pin: 38
- id: dac_uart
rx_pin: 4
tx_pin: 6
baud_rate: 115200
stop_bits: 1
data_bits: 8
parity: NONE
debug:
modbus:
uart_id: dac_uart
modbus_controller:
- address: 1
update_interval: 5s
i2c:
- id: bus_a
sda: 8
scl: 18
scan: true
frequency: 400kHz
text_sensor:
- platform: ethernet_info
ip_address:
name: ESP IP Address
id: eth_ip
address_0:
name: ESP IP Address 0
address_1:
name: ESP IP Address 1
address_2:
name: ESP IP Address 2
address_3:
name: ESP IP Address 3
address_4:
name: ESP IP Address 4
dns_address:
name: ESP DNS Address
mac_address:
name: ESP MAC Address
font:
- file: "gfonts://Roboto"
id: roboto
size: 15
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
lambda: |-
it.printf(0, 15, id(roboto), "IP: %s", id(eth_ip).state.c_str());
output:
# CH1 (0x0FA0 / 4000)
- platform: modbus_controller
id: dac_ch1_out
address: 0x0FA0
value_type: U_WORD
write_lambda: |-
// state = 0.0 ~ 1.0 → 0 ~ 4095
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH2 (0x0FA1 / 4001)
- platform: modbus_controller
id: dac_ch2_out
address: 0x0FA1
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH3
- platform: modbus_controller
id: dac_ch3_out
address: 0x0FA2
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH4
- platform: modbus_controller
id: dac_ch4_out
address: 0x0FA3
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH5
- platform: modbus_controller
id: dac_ch5_out
address: 0x0FA4
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH6
- platform: modbus_controller
id: dac_ch6_out
address: 0x0FA5
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH7
- platform: modbus_controller
id: dac_ch7_out
address: 0x0FA6
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH8
- platform: modbus_controller
id: dac_ch8_out
address: 0x0FA7
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH9
- platform: modbus_controller
id: dac_ch9_out
address: 0x0FA8
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH10
- platform: modbus_controller
id: dac_ch10_out
address: 0x0FA9
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH11
- platform: modbus_controller
id: dac_ch11_out
address: 0x0FAA
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH12
- platform: modbus_controller
id: dac_ch12_out
address: 0x0FAB
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH13
- platform: modbus_controller
id: dac_ch13_out
address: 0x0FAC
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH14
- platform: modbus_controller
id: dac_ch14_out
address: 0x0FAD
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH15
- platform: modbus_controller
id: dac_ch15_out
address: 0x0FAE
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH16
- platform: modbus_controller
id: dac_ch16_out
address: 0x0FAF
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH17 (0x0FB0 / 4016)
- platform: modbus_controller
id: dac_ch17_out
address: 0x0FB0
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH18
- platform: modbus_controller
id: dac_ch18_out
address: 0x0FB1
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH19
- platform: modbus_controller
id: dac_ch19_out
address: 0x0FB2
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH20
- platform: modbus_controller
id: dac_ch20_out
address: 0x0FB3
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH21
- platform: modbus_controller
id: dac_ch21_out
address: 0x0FB4
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH22
- platform: modbus_controller
id: dac_ch22_out
address: 0x0FB5
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH23
- platform: modbus_controller
id: dac_ch23_out
address: 0x0FB6
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH24
- platform: modbus_controller
id: dac_ch24_out
address: 0x0FB7
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH25
- platform: modbus_controller
id: dac_ch25_out
address: 0x0FB8
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH26
- platform: modbus_controller
id: dac_ch26_out
address: 0x0FB9
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH27
- platform: modbus_controller
id: dac_ch27_out
address: 0x0FBA
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH28
- platform: modbus_controller
id: dac_ch28_out
address: 0x0FBB
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH29
- platform: modbus_controller
id: dac_ch29_out
address: 0x0FBC
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH30
- platform: modbus_controller
id: dac_ch30_out
address: 0x0FBD
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH31
- platform: modbus_controller
id: dac_ch31_out
address: 0x0FBE
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
# CH32 (0x0FBF / 4031)
- platform: modbus_controller
id: dac_ch32_out
address: 0x0FBF
value_type: U_WORD
write_lambda: |-
uint16_t reg = (uint16_t) round(x * 4095.0);
return reg;
light:
- platform: monochromatic
name: "DAC CH1"
output: dac_ch1_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH2"
output: dac_ch2_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH3"
output: dac_ch3_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH4"
output: dac_ch4_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH5"
output: dac_ch5_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH6"
output: dac_ch6_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH7"
output: dac_ch7_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH8"
output: dac_ch8_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH9"
output: dac_ch9_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH10"
output: dac_ch10_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH11"
output: dac_ch11_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH12"
output: dac_ch12_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH13"
output: dac_ch13_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH14"
output: dac_ch14_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH15"
output: dac_ch15_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH16"
output: dac_ch16_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH17"
output: dac_ch17_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH18"
output: dac_ch18_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH19"
output: dac_ch19_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH20"
output: dac_ch20_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH21"
output: dac_ch21_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH22"
output: dac_ch22_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH23"
output: dac_ch23_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH24"
output: dac_ch24_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH25"
output: dac_ch25_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH26"
output: dac_ch26_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH27"
output: dac_ch27_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH28"
output: dac_ch28_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH29"
output: dac_ch29_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH30"
output: dac_ch30_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH31"
output: dac_ch31_out
default_transition_length: 0s
- platform: monochromatic
name: "DAC CH32"
output: dac_ch32_out
default_transition_length: 0s
pcf8574:
- id: pcf8574_hub_1 # for input channel 1-16
i2c_id: bus_a
address: 0x22
pcf8575: true
- id: pcf8574_hub_2 # for input channel 17-32
i2c_id: bus_a
address: 0x24
pcf8575: true
switch:
- platform: uart
uart_id: uart_1
name: "RS485 Button"
data: [0x11, 0x22, 0x33, 0x44, 0x55]
binary_sensor:
- platform: gpio
name: "dm32-input01"
id: dm32_input01
pin:
pcf8574: pcf8574_hub_1
number: 8
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input02"
id: dm32_input02
pin:
pcf8574: pcf8574_hub_1
number: 9
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input03"
id: dm32_input03
pin:
pcf8574: pcf8574_hub_1
number: 10
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input04"
id: dm32_input04
pin:
pcf8574: pcf8574_hub_1
number: 11
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input05"
id: dm32_input05
pin:
pcf8574: pcf8574_hub_1
number: 12
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input06"
id: dm32_input06
pin:
pcf8574: pcf8574_hub_1
number: 13
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input07"
id: dm32_input07
pin:
pcf8574: pcf8574_hub_1
number: 14
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input08"
id: dm32_input08
pin:
pcf8574: pcf8574_hub_1
number: 15
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input09"
id: dm32_input09
pin:
pcf8574: pcf8574_hub_1
number: 0
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input10"
id: dm32_input10
pin:
pcf8574: pcf8574_hub_1
number: 1
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input11"
id: dm32_input11
pin:
pcf8574: pcf8574_hub_1
number: 2
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input12"
id: dm32_input12
pin:
pcf8574: pcf8574_hub_1
number: 3
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input13"
id: dm32_input13
pin:
pcf8574: pcf8574_hub_1
number: 4
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input14"
id: dm32_input14
pin:
pcf8574: pcf8574_hub_1
number: 5
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input15"
id: dm32_input15
pin:
pcf8574: pcf8574_hub_1
number: 6
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input16"
id: dm32_input16
pin:
pcf8574: pcf8574_hub_1
number: 7
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input17"
id: dm32_input17
pin:
pcf8574: pcf8574_hub_2
number: 0
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input18"
id: dm32_input18
pin:
pcf8574: pcf8574_hub_2
number: 1
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input19"
id: dm32_input19
pin:
pcf8574: pcf8574_hub_2
number: 2
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input20"
id: dm32_input20
pin:
pcf8574: pcf8574_hub_2
number: 3
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input21"
id: dm32_input21
pin:
pcf8574: pcf8574_hub_2
number: 4
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input22"
id: dm32_input22
pin:
pcf8574: pcf8574_hub_2
number: 5
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input23"
id: dm32_input23
pin:
pcf8574: pcf8574_hub_2
number: 6
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input24"
id: dm32_input24
pin:
pcf8574: pcf8574_hub_2
number: 7
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input25"
id: dm32_input25
pin:
pcf8574: pcf8574_hub_2
number: 8
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input26"
id: dm32_input26
pin:
pcf8574: pcf8574_hub_2
number: 9
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input27"
id: dm32_input27
pin:
pcf8574: pcf8574_hub_2
number: 10
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input28"
id: dm32_input28
pin:
pcf8574: pcf8574_hub_2
number: 11
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input29"
id: dm32_input29
pin:
pcf8574: pcf8574_hub_2
number: 12
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input30"
id: dm32_input30
pin:
pcf8574: pcf8574_hub_2
number: 13
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input31"
id: dm32_input31
pin:
pcf8574: pcf8574_hub_2
number: 14
mode: INPUT
inverted: true
- platform: gpio
name: "dm32-input32"
id: dm32_input32
pin:
pcf8574: pcf8574_hub_2
number: 15
mode: INPUT
inverted: true
## pull-up resistance on PCB
- platform: gpio
name: "dm32-W1-io47"
pin:
number: 47
inverted: true
- platform: gpio
name: "dm32-W1-io48"
pin:
number: 48
inverted: true
- platform: gpio
name: "dm32-W1-io7"
pin:
number: 7
inverted: true
- platform: gpio
name: "dm32-W1-io40"
pin:
number: 40
inverted: true
## without resistance on PCB
- platform: gpio
name: "dm32-W1-io13"
pin:
number: 13
inverted: false
- platform: gpio
name: "dm32-W1-io14"
pin:
number: 14
inverted: false
- platform: gpio
name: "dm32-W1-io21"
pin:
number: 21
inverted: false
ads1115:
- address: 0x48
sensor:
- platform: ads1115
multiplexer: 'A0_GND'
gain: 6.144
resolution: 16_BITS
name: "ADS1115 Channel A0-GND"
update_interval: 5s
- platform: ads1115
multiplexer: 'A1_GND'
gain: 6.144
name: "ADS1115 Channel A1-GND"
update_interval: 5s
- platform: ads1115
multiplexer: 'A2_GND'
gain: 6.144
name: "ADS1115 Channel A2-GND"
update_interval: 5s
- platform: ads1115
multiplexer: 'A3_GND'
gain: 6.144
name: "ADS1115 Channel A3-GND"
update_interval: 5s
web_server:
port: 80
esphome_dm32.txt (Size: 17.6 KB / Downloads: 16)
YouTube: https://www.youtube.com/c/KinCony
Online Store: https://shop.kincony.com
Alibaba Store: https://kincony.en.alibaba.com/
Online Store: https://shop.kincony.com
Alibaba Store: https://kincony.en.alibaba.com/

