Nu er du klar til at redigere din yaml kode, så den kan virke med din sensor.
yaml koden er der hvor du fortæller ESP Boardet hvad det skal gøre, så her kan man nemt komme til at lave en lille tastefejl, men der er lettere end det ser ud ved første øjekast.
For at rette i yaml koden skal du vælge dit ESP Board i ESPHome menuen og trykke på Edit:
Hvis du har fulgt min vejledning, ser din kode sådan ud, selvfølgelig er “name” forskelligt fra gang til gang:
substitutions:
name: esphome-web-fd2d78
friendly_name: Test
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: esphome.web
version: ‘1.0’
esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
– platform: esphome
# Allow provisioning Wi-Fi via serial
improv_serial:
wifi:
# Set up a wifi access point
ap: {}
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:
dashboard_import:
package_import_url: github://esphome/firmware/esphome-web/esp32c3.yaml@main
import_full_config: true
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
authorizer: none
# To have a “next url” for improv serial
web_server:
yaml kode kan man enten lave selv eller finde på Internettet. Jeg vil anbefale, at man starter med at finde koderne på Internettet, indtil man er blevet fortrolig med det man laver og så kan man begynde, at udvikle sin egen. Det er faktisk ret sjovt, når man først kommer i gang med sin egen kode.
Bemærk. Koden jeg viser dig herunder passer til et D1 mini ESP Board.
Her får du den yaml kode jeg har brugt til KY-037 lyd-sensoren:
Den skal indsættes, under den sidste linje vist i ovenstående – husk et linjeskift.
globals:
- id: esphome_sensitivity
type: float
initial_value: '36.5'
restore_value: yes
- id: esphome_volume
type: int
sensor:
- platform: adc
pin: A0
id: esphome_db
device_class: signal_strength
name: "Db SoundEsp"
icon: "mdi:volume-vibrate"
unit_of_measurement: "db"
update_interval: 2s
raw: true
filters:
- lambda: |-
unsigned int sample;
unsigned long startMillis= millis();
float peakToPeak = 0;
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
while (millis() - startMillis < 500) {
sample = analogRead(A0);
if (sample < 1024){
if (sample > signalMax){
signalMax = sample;
}
else if (sample < signalMin){
signalMin = sample;
}
}
}
peakToPeak = map((signalMax - signalMin),1,1024,1.5,1024);
id(esphome_volume) = peakToPeak;
float state = id(esphome_sensitivity)*log10(peakToPeak)+15;
return(state);
- platform: template
name: "Volume SoundEsp"
icon: "mdi:volume-high"
unit_of_measurement: "%"
update_interval: 2s
lambda: return(map((id(esphome_db).state),15,150,0,100));
- platform: template
name: "RAW SoundEsp"
icon: "mdi:volume-source"
unit_of_measurement: "%"
update_interval: 2s
lambda: return(map(id(esphome_volume),1,1024,0,100));
number:
- platform: template
id: sensitivity_slider
name: "Sensitivity SoundEsp"
icon: "mdi:knob"
update_interval: 5s
initial_value: "36.5"
step: 0.1
min_value: 20
max_value: 40
mode: slider
set_action:
then:
- lambda: id(esphome_sensitivity) = x;
Der hvor du samler koden, vil det altså se sådan ud:
esp32_improv:
authorizer: none
# To have a "next url" for improv serial
web_server:
globals:
- id: esphome_sensitivity
type: float
initial_value: '36.5'
rest
Nu er du færdig med koden og kan trykke på:
- Save – eller
- Install
Ved Install kan du vælge Wirelessly
Når du får lilla tekst til sidst, er det lykkedes og du kan trykke STOP.
Din ESP er nu kodet med yaml kode der passer til sensoren. Den vil nu fremgå i din Home Assitant.
Tryk på Indstillinger og derefter på ESPHome:
Hvis du har flere enheder, så vælg din nye ESP enhed på listen.
Her er det færdige resultat, hvor du på slideren kan sætte følsomheden af mikrofonen.
Enheden er nu klar til at komme i Homey.