Byg dine egne smart-sensorer til Homey

HAPS! Der var jeg super heldig at få indfanget Michael Elgaard, som gæste skribent her på Homey.guide, til stor gavn for os alle!

Michael skriver jævnligt på Facebook om spændende ting han har lavet i sit smarthjem. Det var et i indlæg, hvor han fremviste en hjemmelavet dB lydmåler, at jeg fik lokket ham til at skrive en guide til hvordan man laver sådan én. Jeg ser mange brugsformål, især i de smarthjem som har børn boende, der ikke er klar over støjniveauet de udsender fra værelset.
Jeg modtog ikke mindre end et 31 siders langt, gennemarbejdet dokument med detaljeret beskrivelse fra nul til man har en fungerende sensor sat op i Homey – opdelt i 5 naturlige kapitler. De kan læses kontinuerligt eller bruges selvstændigt som reference fra andre guides. Derfor er der nu tilføjet et nyt menupunkt til kategorien DIY sensorer m. ESP.

Jeg sætter stor pris på det kæmpe arbejde og overlader det til Michael at præsentere sig selv og kompetent guide os til hjemmebyg af alle mulige dimser!

Navnet er Michael Elgaard og nogle af jer, kender mig måske fra Homey Brugere Danmark gruppen på Facebook. Jeg har rodet med Elektronik og IT siden jeg gik i folkeskolen og gymnasiet for pyh ha over 40 år siden. Jeg var ikke mere end 10 år, før jeg skilte mine forældres vækkeur ad. Kan faktisk ikke huske om det lykkedes mig at samle det igen 😊

IFTTT var min første automatisering på Internettet og da jeg fik øje på Homey gik det stærkt. Jeg tror vi var under 100 i Homey Brugere Danmark gruppen, da jeg blev medlem.

Dette er min først artikel her på Homey.guide, så bær over med mig og giv mig gerne feedback, så jeg kan blive klogere. Også hvis I mener der skal tilføjes noget.

Da jeg startede med Homey tilbage i 2019, var det blot Philips Hue, lidt Netatmo og et par Aqara sensorer deri. Det har siden taget fuldstændig overhånd og i dag er hele mit hjem smartstyret.
I 2023 kom Home Assistant til for mit vedkommende. Jeg bruger den kun til at få nye enheder i Homey, som ikke kan tilføjes til Homey direkte, for jeg er stadig vild med måden jeg kan lave flows og automationer i Homey.

Forholdsvis sent kom jeg i gang med ESP Boards. Et lille print i flere forskellige udgaver, der både indeholder en programmerbar mikroprocessor og WiFi, samt i nogle tilfælde Bluetooth.

Mine foretrukne ESP Boards er ESP C3 Super Mini eller ESP D1 mini. Søg på ESP boards og du vil opdage at der er rigtig mange forskellige udgaver, der kan lidt forskelligt. Eneste minus ved disse boards er, at de kræver fast strømforsyning, da WiFi sjældent er en god blanding med batteri.

Det der virkeligt gør ESP boards spændende er, at der findes et hav af sensorer man kan tilslutte til dem, som efterfølgende kan importeres i Homey. Dermed kan man få en hurtig og stabil sensor til næsten ingen penge.
Du kender måske Sonoff SNZB-06P – Microwave Presence Sensor, som i skrivende stund koster 140,-. Eller en Aqara FP1E til 399,- for den sags skyld. Du kan bygge den samme for ca. en halvtredser med en ESP C3 Super Mini plus en LD2410C. Der kommer mere om det i næste guide.

ESP Boards og sensorer køber jeg på Amazon, hvis det skal gå hurtigt. Skal de være billige, køber jeg dem på Aliexpress.

I det følgende vil jeg guide dig igennem:

Opsætning af ESPHome på Home Assistant

ESPHome er et open source-projekt, der giver dig mulighed at bygge brugerdefinerede smart home-løsninger baseret på mikrocontrolleren ESP8266 eller ESP32. Du behøver ikke have de store programmeringsevner, for mange af løsningerne finder du nemt på Internettet. Med ESPHome skaber du nemt dit eget hjemmeprojekt, som passer dine behov.

Jeg tager udgangspunkt i at du har allerede har en Home Assistant installeret – og hvis ikke, så er der guides til det her: https://www.home-assistant.io/installation/

Vi går derfor direkte til opsætning af ESPHome addon i Home Assistant.

1. Vælg Indstillinger


2. Vælg Add-ons


3. Tryk på Butik for Tilføjelsesprogrammer


4. Søg på esp og vælg ESPHome, som vist på billedet


5. Nu kommer dette billede frem. Her vises min som allerede er installeret, eneste forskel er, at der hvor der på billedet står stop vil der stå START.

Tryk på START efter du har indstillet det hele som på billedet.

Installer et ESP Board i ESPHome

Den sværeste del af opsætningen af en ny ESPHome enhed er den første opsætning. Dette kræver at dit ESP Board er fysisk tilsluttet din computer med et Data-kabel.
Når den første opsætning er klaret, kan den efterfølgende programmering og opdateringer klares trådløst.

ESP Board kommer i alle afskygninger og dermed kan der findes en del forskellige drivere til dem. Jeg har linket til de 3 der dækker over 95% af de mest benyttede her:

VIGTIGT: Første gang man opsætter et ESP Board bliver man bedt om at angive et navn på enheden, samt brugernavn og adgangskode til sit WiFi. Dette kan jeg ikke vise, da min installation allerede er opsat. Spørger den ikke om adgang til dit WiFi betyder det, at du allerede har angivet det i secrets.yaml filen i root.

Du finder dine secrets i øverste højre hjørne af din ESPHome side.

Lad os få tilslutte et ESP Board til computeren. I dette tilfælde benytter jeg et ESP C3 Super Mini.

Tryk på New Device:

Nu kommer følgende billede frem:


Her har du 2 valgmuligheder:

Open ESPHome Web: Her kan du importere dit ESP Board og opsætte det til WiFi. Herefter skal det importeres i ESPHome.

Continue: Her kan du selv ændre i yaml koden, før du koder boardet.

I denne guide dækker jeg kun Open ESPHome Web delen.


Tryk på Open ESPHome Web:

Tryk på Connect

Hvis din enhed ikke kommer frem her, skal du tilbage til de drivere jeg skrev om tidligere og forsøge igen. Du skal tage boardet fra og sætte det til igen efter du har installeret driverne.

Sådan ser det ud, hvis du kan vælge et board:

Marker og tryk på Opret forbindelse

Nu kan du gøre dit board klar til brug:

Tryk på PREPARE FOR FIRST USE

Tryk på INSTALL

Tryk på CLOSE

Nu kan du opsætte WiFi:

Hvis det er FØRSTE GANG skal du vælge CONNECT TO WI-FI, så du får dannet din Secrets.

Tilbage i Home Assistant er der nu fundet en ny enhed:

Tryk på KONFIGURÉR

Tryk på SEND

Vælg hvilket område din nye enhed skal placeres i og tryk AFSLUT

Vælg ESPHome i dit sidepanel

Tryk på ADOPT på din nye ENHED

Skriv navnet på din enhed og tryk ADOPT

Hvis denne dialogboks kommer frem, tryk INSTALL

Nu får du noget der ligner dette her frem på din skærm, det betyder at dit board er ved at blive compilet og er helt normalt.

Når du få lilla skrift til sidst er du færdig

Tryk på STOP

Nu er dit ESP Board installeret i ESPHome og tilknyttet din Home Assistant. Her kan du så beslutte dig for hvad du skal bruge det til.

Tilslut en sensor til et ESP Board

Redigering af YAML koden – så den virker med sensoren

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å:

  1. Save – eller
  2. 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.

Redigering af YAML koden – så den virker med sensoren

Kopierer sensoren til Homey

Nu har vi fået en sensor gjort klar i Home Assistant, ofte kaldet HA og den skal vi have kopieret til Homey.

Først skal der installeres en app i Homey, som kan hente enhederne fra Home Assistant. For nemheds skyld låner jeg fra Brian Kristjansens guide Få adgang til flere enheder med Home Assistant:

Der findes 2 forskellige apps i Homey, som giver adgang til enheder fra Home Assistant: en officiel- og en community-udgave. Jeg har haft mest succes med community udgaven, så det er den jeg bruger i denne guide.


1. Start med at installere Home Assistant Community app’en
Man kan godt have have begge installeret og f.eks. benytte den officielle udgave hvis enheden der overføres fra Home Assistant fungerer dårligt i community-udgaven

2. For at Homey kan få lov til at kommunikere med Home Assistant, så skal du bruge en token
En token er en slags password, som kan indeholde flere informationer om rettigheder. En token står alene og har ikke behov for et tilhørende brugernavn.

I Home Assistant skal du klikke på “din profil”, hvilket i mit tilfælde er der hvor der står Brian.

På næste side trykker du på fanebladet Security og scroller helt ned i bunden til du møder overskriften Long-lived access tokens.

Klik på Create Token og angiv et beskrivende navn, f.eks. HP19, HP23, Homey eller Bente, hvis din Homey hedder Bente.

Kopier din token – og gem den evt. et sted.
Det er eneste gang at den er synlig – og det er svært at huske den.

3. Nu skal token’en tilføjes til Home Assistant app’en i Homey.

I Homey skal du klikke på Settings Home Assistant Configure.

Indtast IP-adressen til din Home Assistant og token’en fra forrige punkt, som vist på ovenstående billede.

Nu er du klar til at importere din nye ESP sensor i Homey

Lad os tilføje Lydsensoren i Homey. Jeg viser det i webudgaven, men fremgangsmåden i Homey App er den samme.

Tryk på Enheder (1) og Tilføj ny enhed (2)

Vælg Home Assistant Community

Vælg Sensor

Tryk Forbind

Søg (1) på det du kaldte din sensor i HA, her søger jeg på Sound.

Marker (2) de enheder der kommer fra Lydsensoren. Der er 3 og du bruger måske ikke dem alle, men tag dem bare med, for du kan altid slette dem fra Homey igen.

Tryk på Continue (3)

Nu kan du vælge hvilket Ikon dine sensorer skal have i Homey.
Du kan også blot beholde dem der er valgt og trykke på Næste

Nu er dine sensorer kommet i Homey og klar til at indgå i Flow

Tak fordi du læste med så langt og tak fordi du fulgte min første vejledning nogensinde. Hvem ved, måske kommer der flere. Er der en bestemt sensor du gerne vil have i HA og videre til Homey, så find mig i Homey Brugere Danmark på Facebook og læg en besked.

Skriv en kommentar

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *